我正在尝试用C#和MySQL数据库制作一个地址簿。我正在尝试使用标签并使用数据库信息设置Text
的{{1}}。我正在使用Label
作为我的标签。我只需要显示1个人的信息,我希望数据库中的所有人都列在输出中。我做错了什么?
FlowLayoutPanel
答案 0 :(得分:0)
您可以在标签中看到最后检索到的记录,因为每次下一个检索到的记录都会覆盖Label
循环中的Text
' while
。如果要显示所有检索到的记录,则应使用DataGridView
。像这样:
SqlDataAdapter da = new SqlDataAdapter("SELECT first_name, last_name, street, city, state, zip, phone, email From address_book ORDER BY last_name, first_name", con);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
答案 1 :(得分:0)
我想出了如何编写我想要的代码。我在label
上使用FlowLayoutPanel
来编写MySQL表中的所有条目。这不是工具箱中的Windows窗体Label
。它将从数据库反复写入label
,flowLayoutPanel
将在panel
中逐个放置每个新输出。
cnn.Open();
MySqlDataReader reader = cmd.ExecuteReader();
Label lblName;
while (reader.Read())
{
lblName = new Label();
lblName.Text = reader.GetString("first_name") + " " + reader.GetString("last_name") + " \r\n"
+ reader.GetString("street") + " \r\n"
+ reader.GetString("city") + ", " + reader.GetString("state") + " " + reader.GetString("zip") + " \r\n"
+ reader.GetString("phone") + " \r\n"
+ reader.GetString("email");
lblName.Width = 200;
lblName.Height = 90;
flowLayoutPanel1.Controls.Add(lblName);
}
cnn.Close();