Can anyone explain to me how I could convert this sample function to use a DataReader instead of a 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++;
}
}
}
Assuming you get have a method on your SqlDataAccess class to return a datareader, you simply use
Remember you need to expicitly close SqlDataReaders otherwise they will consume a database connection until garbage collected