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 devuelto por la consulta. Se omiten columnas o filas adicionales.
public:
virtual System::Object ^ ExecuteScalar();
public:
override System::Object ^ ExecuteScalar();
public object ExecuteScalar();
public override object ExecuteScalar();
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Function ExecuteScalar () As Object
Public Overrides Function ExecuteScalar () As Object
Devoluciones
Primera columna de la primera fila del conjunto de resultados o una referencia nula (Nothing en Visual Basic) si el conjunto de resultados 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ó en Stream. Para obtener más información sobre el streaming, consulte Compatibilidad con streaming de SqlClient.
O bien
Se usó un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml cuando Value se estableció en TextReader.
O bien
Se usó un SqlDbType valor distinto de Xml cuando Value se estableció en XmlReader.
Se produjo una excepción al ejecutar el comando en una fila bloqueada. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.
O bien
Se ha agotado el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, consulte Compatibilidad con streaming de SqlClient.
Cerrado SqlConnection o quitado durante una operación de streaming. Para obtener más información sobre el streaming, consulte Compatibilidad con streaming de SqlClient.
Error en un Streamobjeto , XmlReader o TextReader durante una operación de streaming. Para obtener más información sobre el streaming, consulte Compatibilidad con streaming de SqlClient.
El Streamobjeto , XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, consulte Compatibilidad con streaming 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 ha insertado 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 ejemplo de C#siguiente:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();