SqlCommand.ExecuteScalar Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Führt die Abfrage aus und gibt die erste Spalte der ersten Zeile im Resultset zurück, die von der Abfrage zurückgegeben wird. Zusätzliche Spalten oder Zeilen werden ignoriert.
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
Gibt zurück
Die erste Spalte der ersten Zeile im Resultset oder ein Nullverweis (Nothing in Visual Basic), wenn das Resultset leer ist. Gibt maximal 2033 Zeichen zurück.
Implementiert
Ausnahmen
Eine SqlDbType andere als Binary oder VarBinary wurde verwendet, als Value auf Stream. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.
-oder-
Eine SqlDbType andere als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, als Value festgelegt TextReaderwurde.
-oder-
Eine SqlDbType andere als XML wurde verwendet, als Value auf XmlReader".
Ausnahme beim Ausführen des Befehls für eine gesperrte Zeile. Diese Ausnahme wird nicht generiert, wenn Sie Microsoft .NET Framework, Version 1.0 verwenden.
-oder-
Während eines Streamingvorgangs ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.
Das SqlConnection Schließen oder Ablegen während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.
Fehler in einem StreamOder XmlReaderTextReader Objekt während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.
Das StreamObjekt XmlReader wurde TextReader während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.
Beispiele
Im folgenden Beispiel wird ein SqlCommand Und dann mithilfe ExecuteScalarvon . Das Beispiel wird eine Zeichenfolge übergeben, die einen neuen Wert darstellt, der in eine Tabelle eingefügt werden soll, und eine Zeichenfolge, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll. Die Funktion gibt den neuen Wert der Identitätsspalte zurück, wenn eine neue Zeile eingefügt wurde, 0 bei Einem Fehler.
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
Hinweise
Verwenden Sie die ExecuteScalar Methode, um einen einzelnen Wert (z. B. einen Aggregatwert) aus einer Datenbank abzurufen. Dies erfordert weniger Code als die Verwendung der ExecuteReader Methode, und führen Sie dann die Vorgänge aus, die Sie zum Generieren des einzelnen Werts mithilfe der von einem SqlDataReader.
Eine typische ExecuteScalar Abfrage kann wie im folgenden C#-Beispiel formatiert werden:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();