假设我有一个名为Login的SQL数据库,并且其中有一个名为LoggedIn的表,列 name 和 clockin ,我们不知道有多少行它有。
在C#中,我想将所有这些数据打印成单独的标签,如下所示:
SqlConnection con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\gregg\Desktop\KFC\Data.mdf; Integrated Security = True; Connect Timeout = 30");
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(query, con);
con.Open();
da.Fill(dt);
con.Close();
int x = 1;
DataRow row1 = dt.Rows[x];
for (int i = 0; i < x; i++)
{
if (row1 == null)
{
MessageBox.Show("ERROR");
}
else
{
switch (x)
{
case 1:
label1.Text = row1["name"].ToString();
label4.Text = row1["clockin"].ToString();
x++;
break;
case 2:
label2.Text = row1["name"].ToString();
label5.Text = row1["clockin"].ToString();
x++;
break;
case 3:
label3.Text = row1["name"].ToString();
label6.Text = row1["clockin"].ToString();
x++;
break;
case 4:
label7.Text = row1["name"].ToString();
label8.Text = row1["clockin"].ToString();
x++;
break;
default: MessageBox.Show("ERROR");
break;
}
}
}
目前这是我的代码。我对其他解决这个问题的方法持开放态度。
答案 0 :(得分:1)
不要为此创建或设置单独的控件,而不是在表单上,甚至不在循环中。
相反,寻找一个允许绑定到数据源的选项。 DataGrid
和FlowLayoutPanel
控件都是不错的选择。
假设您已经设置了列和映射的DataGrid,代码将如下所示:
DataTable dt = new DataTable();
using (var con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\gregg\Desktop\KFC\Data.mdf; Integrated Security = True; Connect Timeout = 30"))
{
SqlDataAdapter da = new SqlDataAdapter(query, con);
da.Fill(dt);
DataGrid1.DataSource = dt;
}
那就是它。