Reputation: 287
I have sql query in my asp.net webapp and the result is stored in datareader. Every row in datareader contains 10 columns. I want to fill table with these data. However, I have no idea, how to loop through columns in datareader. I need something like this:
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);
}
}
I hope you got the point. Thanks
Upvotes: 9
Views: 20576
Reputation:
You should just do it through a 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);
At the point, your DataTable
(dt
) contains all of the data from your query.
Upvotes: 2
Reputation: 45761
Use the FieldCount
property of the 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);
}
}
Upvotes: 22