SqlCommand.ExecuteScalar Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados devueltos por la consulta. Las demás columnas o filas no se tienen en cuenta.
public:
override System::Object ^ ExecuteScalar();
public:
virtual System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
public object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object
Public Function ExecuteScalar () As Object
Devoluciones
La primera columna de la primera fila es el conjunto resultante, o una referencia null (Nothing
en Visual Basic) si el conjunto resultante está vacío. Devuelve un máximo de 2033 caracteres.
Implementaciones
Excepciones
Se usó un SqlDbType valor distinto de Binary o VarBinary cuando Value se estableció Streamen . Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
o bien
Se usó un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml cuando Value se estableció TextReaderen .
o bien
Se usó un SqlDbType valor distinto de Xml cuando Value se estableció XmlReaderen .
Se produjo una excepción al ejecutar el comando contra una fila bloqueada. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.
o bien
Se agotó el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
La SqlConnection se cerró o se interrumpió durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
Se produjo un error en un objeto Stream, XmlReader o TextReader durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
El objeto Stream, XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.
Ejemplos
En el ejemplo siguiente se crea y SqlCommand , a continuación, se ejecuta mediante ExecuteScalar. El ejemplo se pasa una cadena que representa un nuevo valor que se va a insertar en una tabla y una cadena que se va a usar para conectarse al origen de datos. La función devuelve el nuevo valor de columna Identity si se insertó una nueva fila, 0 en caso de error.
static public int AddProductCategory(string newName, string connString)
{
Int32 newProdID = 0;
string sql =
"INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
+ "SELECT CAST(scope_identity() AS int)";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = newName;
try
{
conn.Open();
newProdID = (Int32)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return (int)newProdID;
}
Public Function AddProductCategory( _
ByVal newName As String, ByVal connString As String) As Integer
Dim newProdID As Int32 = 0
Dim sql As String = _
"INSERT INTO Production.ProductCategory (Name) VALUES (@Name); " _
& "SELECT CAST(scope_identity() AS int);"
Using conn As New SqlConnection(connString)
Dim cmd As New SqlCommand(sql, conn)
cmd.Parameters.Add("@Name", SqlDbType.VarChar)
cmd.Parameters("@Name").Value = newName
Try
conn.Open()
newProdID = Convert.ToInt32(cmd.ExecuteScalar())
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
Return newProdID
End Function
Comentarios
Use el ExecuteScalar método para recuperar un valor único (por ejemplo, un valor agregado) de una base de datos. Esto requiere menos código que usar el ExecuteReader método y, a continuación, realizar las operaciones que necesita para generar el valor único mediante los datos devueltos por .SqlDataReader
Se puede dar formato a una consulta típica ExecuteScalar como en el siguiente ejemplo de C#:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();