执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
[Visual Basic] Public Overridable Function ExecuteScalar() As Object Implements _ IDbCommand.ExecuteScalar [C#] public virtual object ExecuteScalar(); [C++] public: virtual Object* ExecuteScalar(); [JScript] public function ExecuteScalar() : Object;
返回值
结果集中第一行的第一列或空引用(如果结果集为空)。
实现
异常
异常类型 | 条件 |
---|---|
SqlException | 在对锁定的行执行该命令期间发生了异常。如果使用 Microsoft .NET Framework 1.0 版,则不会发生该异常。 |
备注
使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。
典型的 ExecuteScalar 查询可以采用类似于下面的 C# 示例的格式:
cmd.CommandText = "select count(*) from region"; Int32 count = (int32) cmd.ExecuteScalar();
示例
[Visual Basic, C#, C++] 以下示例创建一个 SqlCommand,然后使用 ExecuteScalar 执行它。为该示例传递两个字符串:一个是返回聚合结果的 Transact-SQL 语句,另一个用于连接到数据源。
[Visual Basic] Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As SqlConnection) Dim myCommand As New SqlCommand(myScalarQuery, myConnection) myCommand.Connection.Open() myCommand.ExecuteScalar() myConnection.Close() End Sub 'CreateMySqlCommand [C#] public void CreateMySqlCommand(string myScalarQuery, SqlConnection myConnection) { SqlCommand myCommand = new SqlCommand(myScalarQuery, myConnection); myCommand.Connection.Open(); myCommand.ExecuteScalar(); myConnection.Close(); } [C++] public: void CreateMySqlCommand(String* myScalarQuery, SqlConnection* myConnection) { SqlCommand* myCommand = new SqlCommand(myScalarQuery, myConnection); myCommand->Connection->Open(); myCommand->ExecuteScalar(); myConnection->Close(); }