SqlCommand.ExecuteScalar Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Végrehajtja a lekérdezést, és visszaadja a lekérdezés által visszaadott eredményhalmaz első sorának első oszlopát. A rendszer figyelmen kívül hagyja a további oszlopokat vagy sorokat.
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
Válaszok
Az eredményhalmaz első sorának első oszlopa, vagy null hivatkozás (Nothing Visual Basic), ha az eredményhalmaz üres. Legfeljebb 2033 karaktert ad vissza.
Megvalósítás
Kivételek
A SqlDbTypebináristól vagy a VarBinarytól eltérő függvényt használt a rendszer, amikor Value a beállítás értéke Stream. A streamelésről további információt az SqlClient streamelési támogatásában talál.
-vagy-
A SqlDbTypechar, NChar, NVarChar, VarChar vagy Xml kivételével más is használható volt a beállításnál ValueTextReader.
-vagy-
Az SqlDbTypeXml-fájltól eltérő érték lett használva a ValuebeállításkorXmlReader.
Kivétel történt a parancs zárolt soron való végrehajtása során. Ez a kivétel nem jön létre Microsoft .NET Framework 1.0-s verziójának használatakor.
-vagy-
Időtúllépés történt egy streamelési művelet során. A streamelésről további információt az SqlClient streamelési támogatásában talál.
A SqlConnection streamelési művelet során bezárt vagy elvetett. A streamelésről további információt az SqlClient streamelési támogatásában talál.
Hiba történt egy Stream, XmlReader vagy TextReader objektumban egy streamelési művelet során. A streamelésről további információt az SqlClient streamelési támogatásában talál.
Az Stream, XmlReader vagy TextReader objektum egy streamelési művelet során lett bezárva. A streamelésről további információt az SqlClient streamelési támogatásában talál.
Példák
Az alábbi példa létrehoz egy SqlCommand , majd végrehajtja azt a használatával ExecuteScalar. A példa átad egy új értéket képviselő sztringet, amelyet be szeretne szúrni egy táblába, és egy olyan sztringet, amely az adatforráshoz való csatlakozáshoz használható. A függvény az új Identitás oszlop értékét adja vissza, ha új sort szúrtak be, 0 hiba esetén.
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
Megjegyzések
ExecuteScalar A metódussal egyetlen értéket (például összesített értéket) kér le egy adatbázisból. Ehhez kevesebb kódra van szükség, mint a ExecuteReader metódus használata, majd az egyetlen érték létrehozásához szükséges műveletek végrehajtása a visszaadott SqlDataReaderadatokkal.
Egy tipikus ExecuteScalar lekérdezés a következő C#-példa szerint formázható:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();
A következőre érvényes:
Lásd még
- Az adatok összekapcsolása és lekérése az ADO-ban.NET
A .NET-keretrendszer Data Provider használata SQL Server - ADO.NET áttekintése