SqlCommand.ExecuteScalar Metódus

Definíció

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