Bagikan melalui


SqlCommand.ExecuteScalar Metode

Definisi

Menjalankan kueri, dan mengembalikan kolom pertama dari baris pertama dalam tataan hasil yang dikembalikan oleh kueri. Kolom atau baris tambahan diabaikan.

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

Mengembalikan

Kolom pertama baris pertama dalam tataan hasil, atau referensi null (Nothing di Visual Basic) jika tataan hasil kosong. Mengembalikan maksimal 2033 karakter.

Penerapan

Pengecualian

Selain SqlDbTypeBiner atau VarBinary digunakan ketika Value diatur ke Stream. Untuk informasi selengkapnya tentang streaming, lihat Dukungan Streaming SqlClient.

-atau-

Selain SqlDbTypeChar, NChar, NVarChar, VarChar, atau Xml digunakan saat Value diatur ke TextReader.

-atau-

Selain SqlDbTypeXml digunakan ketika Value diatur ke XmlReader.

Terjadi pengecualian saat menjalankan perintah terhadap baris terkunci. Pengecualian ini tidak dihasilkan saat Anda menggunakan Microsoft .NET Framework versi 1.0.

-atau-

Waktu habis terjadi selama operasi streaming. Untuk informasi selengkapnya tentang streaming, lihat Dukungan Streaming SqlClient.

Ditutup SqlConnection atau dihilangkan selama operasi streaming. Untuk informasi selengkapnya tentang streaming, lihat Dukungan Streaming SqlClient.

Terjadi kesalahan dalam Streamobjek , XmlReader atau TextReader selama operasi streaming. Untuk informasi selengkapnya tentang streaming, lihat Dukungan Streaming SqlClient.

Objek Stream, XmlReader atau TextReader ditutup selama operasi streaming. Untuk informasi selengkapnya tentang streaming, lihat Dukungan Streaming SqlClient.

Contoh

Contoh berikut membuat SqlCommand lalu menjalankannya menggunakan ExecuteScalar. Contohnya diteruskan string yang mewakili nilai baru yang akan disisipkan ke dalam tabel, dan string yang akan digunakan untuk menyambungkan ke sumber data. Fungsi mengembalikan nilai kolom Identitas baru jika baris baru disisipkan, 0 pada kegagalan.

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

Keterangan

ExecuteScalar Gunakan metode untuk mengambil satu nilai (misalnya, nilai agregat) dari database. Ini membutuhkan lebih sedikit kode daripada menggunakan ExecuteReader metode , lalu melakukan operasi yang Anda butuhkan untuk menghasilkan nilai tunggal menggunakan data yang SqlDataReaderdikembalikan oleh .

Kueri umum ExecuteScalar dapat diformat seperti dalam contoh C# berikut:

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

Berlaku untuk

Lihat juga