Как мне перебирать строки с помощью устройства чтения данных в C #?

Я знаю, что могу использовать while(dr.Read()){...} но это зацикливает каждое поле в моей таблице, я хочу получить все значения из первой строки, а затем второй … и так далее.

Допустим, у меня есть таблица вроде этого:

 ID--------------Value1--------------Value2------------------Value3 1 hello hello2 hello3 2 hi1 hi2 hi3 

сначала я хочу получить, hello , hello2 и hello3 а затем перейти ко второй строке и получить все значения.

Есть ли способ достичь этого? Надеюсь, кто-то поймет, что я имею в виду.

Мне очень жаль, это решено сейчас. Я просто не кодировал правильно …

И да, метод SqlDataReader.Read () делает то, что он должен делать, снова ошибка была моей.

Так работает DataReader , он предназначен для чтения строк базы данных по одному за раз.

 while(reader.Read()) { var value1 = reader.GetValue(0); // On first iteration will be hello var value2 = reader.GetValue(1); // On first iteration will be hello2 var value3 = reader.GetValue(2); // On first iteration will be hello3 } в while(reader.Read()) { var value1 = reader.GetValue(0); // On first iteration will be hello var value2 = reader.GetValue(1); // On first iteration will be hello2 var value3 = reader.GetValue(2); // On first iteration will be hello3 } 
 int count = reader.FieldCount; while(reader.Read()) { for(int i = 0 ; i < count ; i++) { Console.WriteLine(reader.GetValue(i)); } } 

Заметка; если у вас несколько сеток, тогда:

 do { int count = reader.FieldCount; while(reader.Read()) { for(int i = 0 ; i < count ; i++) { Console.WriteLine(reader.GetValue(i)); } } } while (reader.NextResult()) 

Или вы можете попытаться получить доступ к столбцам напрямую по имени:

 while(dr.Read()) { string col1 = (string)dr["Value1"]; string col2 = (string)dr["Value2"]; string col3 = (string)dr["Value3"]; } в while(dr.Read()) { string col1 = (string)dr["Value1"]; string col2 = (string)dr["Value2"]; string col3 = (string)dr["Value3"]; } 

Невозможно сразу получить «целую строку» – вам нужно пройти через строки, и для каждой строки вам нужно прочитать каждый столбец отдельно:

 using(SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { string value1 = rdr.GetString(0); string value2 = rdr.GetString(1); string value3 = rdr.GetString(2); } } 

То, что вы делаете с теми строками, которые вы читаете для каждой строки, полностью зависит от вас – вы можете сохранить их в class, который вы определили, или что-то еще ….

Как мне перебирать строки с помощью устройства чтения данных в C #?

IDataReader. Read() IDataReader. Read() продвигает читателя к следующей строке в наборе результатов.

 while(reader.Read()){ /* do whatever you'd like to do for each row. */ } в while(reader.Read()){ /* do whatever you'd like to do for each row. */ } 

Итак, для каждой итерации вашего цикла вы бы сделали еще один цикл, от 0 до reader. FieldCount reader. FieldCount и reader. GetValue(i) вызовов reader. GetValue(i) reader. GetValue(i) для каждого поля.

Вопрос в том, какую структуру вы хотите использовать для хранения этих данных?

Фактически метод Read выполняет итерацию по записям в результирующем наборе. В вашем случае – над строками таблицы. Таким образом, вы все еще можете использовать его.

 while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { subjob.Items.Add(dr[i]); } } - while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { subjob.Items.Add(dr[i]); } } 

читать строки в одном столбце

Предположим, что ваш DataTable имеет следующие столбцы, попробуйте этот код:

 DataTable dt =new DataTable(); txtTGrossWt.Text = dt.Compute("sum(fldGrossWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldGrossWeight)", "").ToString(); txtTOtherWt.Text = dt.Compute("sum(fldOtherWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldOtherWeight)", "").ToString(); txtTNetWt.Text = dt.Compute("sum(fldNetWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldNetWeight)", "").ToString(); txtFinalValue.Text = dt.Compute("sum(fldValue)", "").ToString() == "" ? "0" : dt.Compute("sum(fldValue)", "").ToString(); 
  • Динамически создавать столбцы таблицы в JSF
  • Как экспортировать DataTable в Excel
  • Как использовать p: graphicImage с StreamedContent в p: dataTable?
  • JSF convertDateTime с часовым поясом в datatable
  • DataTable для JSON
  • Как привязать DataTable к Datagrid
  • Как показать детали текущей строки из p: dataTable в диалоговом окне ap: и обновить после сохранения
  • Связывание WPF DataGrid с DataTable с использованием TemplateColumns
  • Лучший способ удалить повторяющиеся записи из таблицы данных
  • Почему или не доступен ?
  • Использование java.util.Map в h: dataTable
  • Давайте будем гением компьютера.