有人可以向我解释如何将此示例函数转换为使用DataReader而不是DataSet吗?
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++;
}
}
}
答案 0 :(得分:0)
假设你的SqlDataAccess类有一个方法来返回一个datareader,你只需使用
While (dataReader.Read())
{
decExampleColumn1 = Convert.ToDecimal(dataReader["column1"]);
decExampleColumn2 = Convert.ToDecimal(dataReader["column2"]);
}
请记住,您需要明确关闭SqlDataReaders,否则他们将使用数据库连接,直到垃圾回收