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:
 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

Döndürülenler

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

Uygulamalar

Özel durumlar

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

-veya-

SqlDbType Olarak ayarlandığında Char, NChar, NVarChar, VarChar veya Value dışında bir değer kullanıldıTextReader.

-veya-

SqlDbType olarak ayarlandığında Value dışında bir değer kullanıldıXmlReader.

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 , XmlReader veya TextReader 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 dize ve veri kaynağına bağlanmak için kullanılacak bir dize geçirilir. İşlev, yeni bir satır eklenirse yeni Kimlik 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, toplama değeri) almak için yöntemini kullanın. Bu, yöntemini kullanmaktan ExecuteReader daha az kod gerektirir ve ardından tarafından SqlDataReaderdöndürülen verileri 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.