Share via


SqlCommand.ExecuteScalar 方法

定义

执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。

public:
 override System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object

返回

结果集中第一行的第一列;如果结果集为空,则为 Visual Basic) 中的 null 引用 ( Nothing 。 最多返回 2033 个字符。

例外

SqlDbType 设置为 StreamValue,使用了 BinaryVarBinary 以外的 。 有关流式处理的详细信息,请参阅 SqlClient 流支持

- 或 -

设置为 SqlDbTypeValueTextReader ,使用了 CharNCharNVarCharVarCharXml 以外的 。

-或-

SqlDbType 设置为 XmlReaderValue,使用了 Xml 以外的 。

对锁定的行执行命令时出现异常。 当使用 Microsoft .NET Framework 1.0 版时不生成此异常。

- 或 -

流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持

在流式处理操作期间, XmlReaderTextReader 对象中Stream发生错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持

Stream 流式处理操作期间关闭了 、 XmlReaderTextReader 对象。 有关流式处理的详细信息,请参阅 SqlClient 流支持

示例

以下示例创建 , SqlCommand 然后使用 执行它 ExecuteScalar。 该示例传递了一个字符串,该字符串表示要插入到表中的新值,以及一个用于连接到数据源的字符串。 如果插入了新行,函数将返回新的 Identity 列值,失败时为 0。

using System;
using System.Data;
using Microsoft.Data.SqlClient;

public class Sample
{

    public void CreateSqlCommand(
        string queryString, SqlConnection connection)
    {
        SqlCommand command = new
            SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteScalar();
        connection.Close();
    }

注解

ExecuteScalar使用 方法检索单个值 (例如,从数据库中) 聚合值。 这需要的代码比使用 ExecuteReader 方法少,然后执行使用 返回 SqlDataReader的数据生成单个值所需的操作。

典型 ExecuteScalar 查询的格式可以如以下 C# 示例中所示:

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

适用于