返回select命令中的行数 - 存储过程

时间:2012-10-09 13:00:06

标签: c# sql sql-server

我正在使用存储过程对象执行一个查询。我想在执行查询后在Select语句中返回行数返回。

我在使用ExecuteReader() & ExecuteScalar()

之间感到困惑
public static int getDuplicateEvent(string ATM, string Fault1, string Fault2, ref SqlConnection Connection)
{
    string sQuery = "";
    int result = 0;
    try
    {
        sQuery = /*Query With Format Select Code From A Union Select Code From B */
        using (SqlStoredProcedure sspObj = new SqlStoredProcedure(sQuery, Connection, CommandType.Text))
        {
            result = (int)sspObj.ExecuteScalar();
            sspObj.Dispose();
        }
    }
    catch (Exception xObj)
    {
        result = 0;
    }
    return result;
}

2 个答案:

答案 0 :(得分:3)

ExecuteScalar返回结果第一行的第一列

ExecuteReader返回可以通过

迭代的datareader

您还可以将ExecuteNonQueryFill用于DataSetDataTable

假设您需要行和计数,我会fill a DataTable并使用Rows.Count计算行数

答案 1 :(得分:1)

在以下行中创建一个查询:

SELECT COUNT(*) FROM dbo.Users

然后使用ExecuteScalar接收行数。

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

ExecuteReader将CommandText发送到Connection并构建一个SqlDataReader。