2011-07-19 5 views
-2

Может ли кто-нибудь объяснить мне, как я мог преобразовать эту функцию образца, чтобы использовать DataReader вместо DataSet?Выполнение хранимой процедуры с 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

Я не понимаю, как это будет проходить через счетчик строк с помощью datareader. Я знаю, что я могу изменить dsExampleResults в SqlDataReader drExampleResults, а затем ExecuteReader вместо набора данных. Но обработка возвращенных данных там, где я повесил трубку. – user234702

ответ

0

Предполагая, что вы получите есть метод вашего класса SqlDataAccess вернуть DataReader, вы просто используете

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

Помните, что вы должны expicitly близко SqlDataReaders в противном случае они будут потреблять соединение с базой данных, пока мусор не собирают

+0

«Использовать» заявления - ваш друг, поскольку они закрывают считыватели данных и т. Д. – Oded

Смежные вопросы