使用数据读取器而不是数据集执行存储过程

本文关键字:数据集 执行 存储过程 数据 读取 | 更新日期: 2023-09-27 18:02:26

谁能向我解释我如何可以转换这个示例函数使用数据阅读器而不是数据集?

private void Example(int pIntValue1, pIntValue2)
{
DataSet dsExampleResults;
int i = 0;

using (var daExample = new SqlDataAccess(this.ConnectionString))
{
var cmdExample = daExample.GetStoredProcCommand("Example.dbo.GetExampleData");
                    daExample.AddInParameter(cmdExample, "@param1", DbType.String, name);
                    daExample.AddInParameter(cmdExample, "@param2", DbType.DateTime, date);
                    dsExampleResults = daExample.ExecuteDataSet(cmdExample);
                }
                if (pIntValue1 >= pIntValue2)
                {
                    i = dsExampleResults.Tables[0].Rows.Count;
                    while (i > 0)
                    {
                        i--;
                        decExampleColumn1 = Convert.ToDecimal(dsExampleResults.Tables[0].Rows[i]["column1"]);
                                    decExampleColumn2 = Convert.ToDecimal(dsExampleResults.Tables[0].Rows[i]["column2"]);
                    }
                }
                else
                {
                    i = 0;
                    while (i < dsExampleResults.Tables[0].Rows.Count)
                    {
                        decExampleColumn3 = Convert.ToDecimal(dsExampleResults.Tables[0].Rows[i]["column3"]);
                        decExampleColumn2 = Convert.ToDecimal(dsExampleResults.Tables[0].Rows[i]["column2"]);
                        i++;
                    }
                }
    }

使用数据读取器而不是数据集执行存储过程

假设在SqlDataAccess类上有一个返回数据读取器的方法,只需使用

While (dataReader.Read())
{
        decExampleColumn1 = Convert.ToDecimal(dataReader["column1"]);
        decExampleColumn2 = Convert.ToDecimal(dataReader["column2"]);
}

请记住,您需要明确地关闭sqldatareader,否则它们将消耗数据库连接,直到垃圾收集