SqlCommand.ExecuteScalar Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt de query uitgevoerd en wordt de eerste kolom van de eerste rij in de resultatenset geretourneerd door de query. Extra kolommen of rijen worden genegeerd.
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
Retouren
De eerste kolom van de eerste rij in de resultatenset of een null-verwijzing (Nothing in Visual Basic) als de resultatenset leeg is. Retourneert maximaal 2033 tekens.
Implementeringen
Uitzonderingen
Een SqlDbType andere dan Binary of VarBinary is gebruikt wanneer Value deze is ingesteld op Stream. Zie Ondersteuning voor sqlClient-streaming voor meer informatie over streaming.
– of –
Een SqlDbType andere naam dan Char, NChar, NVarChar, VarChar of XML is gebruikt wanneer Value deze is ingesteld op TextReader.
– of –
Er is een SqlDbType andere dan XML gebruikt wanneer Value deze is ingesteld op XmlReader.
Er is een uitzondering opgetreden tijdens het uitvoeren van de opdracht voor een vergrendelde rij. Deze uitzondering wordt niet gegenereerd wanneer u Microsoft .NET Framework versie 1.0 gebruikt.
– of –
Er is een time-out opgetreden tijdens een streamingbewerking. Zie Ondersteuning voor sqlClient-streaming voor meer informatie over streaming.
De SqlConnection gesloten of verbroken tijdens een streamingbewerking. Zie Ondersteuning voor sqlClient-streaming voor meer informatie over streaming.
Er is een fout opgetreden in een Streamof XmlReaderTextReader object tijdens een streamingbewerking. Zie Ondersteuning voor sqlClient-streaming voor meer informatie over streaming.
Het Streamobject XmlReader of TextReader het object is gesloten tijdens een streamingbewerking. Zie Ondersteuning voor sqlClient-streaming voor meer informatie over streaming.
Voorbeelden
In het volgende voorbeeld wordt een SqlCommand gemaakt en vervolgens uitgevoerd met behulp van ExecuteScalar. In het voorbeeld wordt een tekenreeks doorgegeven die een nieuwe waarde aangeeft die in een tabel moet worden ingevoegd en een tekenreeks die moet worden gebruikt om verbinding te maken met de gegevensbron. De functie retourneert de nieuwe kolomwaarde Identiteit als er een nieuwe rij is ingevoegd, 0 bij fout.
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
Opmerkingen
Gebruik de ExecuteScalar methode om één waarde (bijvoorbeeld een statistische waarde) op te halen uit een database. Hiervoor is minder code vereist dan het gebruik van de ExecuteReader methode en moet u vervolgens de bewerkingen uitvoeren die u nodig hebt om de enkele waarde te genereren met behulp van de gegevens die door een SqlDataReader.
Een typische ExecuteScalar query kan worden opgemaakt zoals in het volgende C#-voorbeeld:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();