SqlCommand.ExecuteScalar Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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();