SqlCommand.ExecuteScalar Yöntem

Tanım

Sorguyu yürütür ve sorgu tarafından döndürülen sonuç kümesindeki ilk satırın ilk sütununu döndürür. Ek sütunlar veya satırlar yoksayılır.

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

Döndürülenler

Sonuç kümesindeki ilk satırın ilk sütunu veya sonuç kümesi boşsa null başvuru (Nothing Visual Basic'te). En fazla 2033 karakter döndürür.

Uygulamalar

Özel durumlar

SqlDbType olarak ayarlandığında Streamİkili veya VarBinary dışında bir değer kullanılmıştırValue. Akış hakkında daha fazla bilgi için bkz . SqlClient Akış Desteği.

-veya-

SqlDbType olarak ayarlandığında TextReaderChar, NChar, NVarChar, VarChar veya Xml dışında bir değer kullanılmıştırValue.

-veya-

olarak ayarlandığında XmlReaderXml dışında bir SqlDbType değer kullanılmıştırValue.

Kilitli bir satırda komut yürütülürken bir özel durum oluştu. Bu özel durum, Microsoft .NET Framework sürüm 1.0 kullanırken oluşturulmaz.

-veya-

Akış işlemi sırasında zaman aşımı oluştu. Akış hakkında daha fazla bilgi için bkz . SqlClient Akış Desteği.

Akış SqlConnection işlemi sırasında kapatılan veya bırakılan. Akış hakkında daha fazla bilgi için bkz . SqlClient Akış Desteği.

Akış işlemi sırasında bir Streamveya XmlReaderTextReader nesnesinde hata oluştu. Akış hakkında daha fazla bilgi için bkz . SqlClient Akış Desteği.

bir Streamakış işlemi sırasında veya XmlReaderTextReader nesnesi kapatıldı. Akış hakkında daha fazla bilgi için bkz . SqlClient Akış Desteği.

Örnekler

Aşağıdaki örnek bir SqlCommand oluşturur ve kullanarak ExecuteScalaryürütür. Örnek, tabloya eklenecek yeni değeri temsil eden bir dizeye ve veri kaynağına bağlanmak için kullanılacak bir dizeye geçirilir. İşlev, yeni bir satır eklenirse yeni Identity sütun değerini döndürür, hata durumunda 0.

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

Açıklamalar

Veritabanından ExecuteScalar tek bir değer (örneğin, bir toplama değeri) almak için yöntemini kullanın. Bu, yöntemini kullanmaktan ExecuteReader daha az kod gerektirir ve ardından tarafından döndürülen SqlDataReaderverileri kullanarak tek bir değer oluşturmak için ihtiyacınız olan işlemleri gerçekleştirmeniz gerekir.

Tipik ExecuteScalar bir sorgu aşağıdaki C# örneğinde olduğu gibi biçimlendirilebilir:

cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();

Şunlara uygulanır

Ayrıca bkz.