0

ストアドプロシージャオブジェクトを使用して1つのクエリを実行しています。クエリの実行後に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;
}
4

2 に答える 2

3

ExecuteScalar returns the first column of the first row of the results

ExecuteReader returns a datareader that can be iterated through

You could also use ExecuteNonQuery or Fill into a DataSet or DataTable

Assuming you want the rows and the count, I would fill a DataTable and count the rows using Rows.Count

于 2012-10-09T13:02:13.590 に答える
1

次の行にクエリを作成します。

SELECT COUNT(*) FROM dbo.Users

次に、を使用しExecuteScalarて行数を受け取ります。

ExecuteScalerクエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

ExecuteReaderはCommandTextを接続に送信し、SqlDataReaderを構築します。

于 2012-10-09T13:07:15.047 に答える