2012-02-09 3 views
5

У меня есть запрос sql в моем asp.net webapp, и результат сохраняется в datareader. Каждая строка в datareader содержит 10 столбцов. Я хочу заполнить таблицу этими данными. Однако я понятия не имею, как перебирать столбцы в datareader. Мне нужно что-то вроде этого:asp.net sql datareader loop by columns

while (vysledky.Read()) 
{ 
    TableRow row = new TableRow(); 
    tab.Controls.Add(row); 
    foreach (column in ((datareader(row))) //it is not real code 
    { 
     TableCell cell = new TableCell(); 
     cell.Text = datareader(row).content; 
     row.Controls.Add(cell); 
    } 
} 

Надеюсь, у вас есть смысл. Благодаря

ответ

14

Используйте FieldCount свойство SqlDataReader:

while (vysledky.Read()) 
{ 
    // Iterate over each of the fields (columns) in the datareader's current record 
    for (int i = 0; i < vysledky.FieldCount; i++) 
    { 
     var value = vysledky[i]; 

     TableCell cell = new TableCell(); 
     cell.Text = Convert.ToString(value); 
     row.Controls.Add(cell); 
    } 
} 
+0

спасибо, это именно то, что мне нужно – polohy

1

Вы просто должны делать это через SqlDataAdapter:

SqlConnection Conn = new SqlConnection(YourConnectionString); 
SqlCommand YourSqlCommand = new SqlCommand(); 
YourSqlCommand.Connection = Conn; 
YourSqlCommand.CommandText = "select * from yourtable"; 

DataTable dt = new DataTable(); 

SqlDataAdapter sda = new SqlDataAdapter(YourSqlCommand); 

sda.Fill(dt); 

В точке, ваш DataTable (dt) содержит все данные из вашего запроса.

+1

Похож на его таблицу ASP, а не на DataTable – Magnus

+0

приятно, я тоже попробую – polohy

+0

@Magnus ASP table? Я не буду следовать. Это определенно «DataTable» с полными данными из запроса 'SqlCommand'. –