C# 从数据库c中放入随机值的步骤
我需要从数据库中随机选择昵称,并将这些昵称显示给多个标签 我的代码在所有这些标签中只显示一个昵称,但我需要在按钮单击随机昵称后,在数据库中显示什么,在标签中显示什么C# 从数据库c中放入随机值的步骤,c#,ms-access,labels,C#,Ms Access,Labels,我需要从数据库中随机选择昵称,并将这些昵称显示给多个标签 我的代码在所有这些标签中只显示一个昵称,但我需要在按钮单击随机昵称后,在数据库中显示什么,在标签中显示什么 void Button1Click(object sender, EventArgs e) { OleDbConnection connection = new OleDbConnection(); connection.ConnectionString = @"Pro
void Button1Click(object sender, EventArgs e)
{
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=names.mdb";
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT ID,nickname FROM names where ID=3 ";
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read()){
label1.Text=reader["nickname"].ToString();
label2.Text=reader["nickname"].ToString();
label3.Text=reader["nickname"].ToString();
label4.Text=reader["nickname"].ToString();
label5.Text=reader["nickname"].ToString();
label6.Text=reader["nickname"].ToString();
label7.Text=reader["nickname"].ToString();
label8.Text=reader["nickname"].ToString();
}
connection.Close();
}
表格范例
到label1昵称1,
到label2昵称26,
到label3的昵称78,
请帮助我并为我糟糕的英语道歉:我的想法是将您的SQL修改为,因为您当前的SQL将始终选择同一行。通过遍历每个标签,对每个标签执行此操作
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=names.mdb";
connection.Open();
foreach (Control control in Controls)
{
if (control is Label)
{
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT nickname FROM names ORDER BY rnd(ID)";
OleDbDataReader reader = command.ExecuteReader();
reader.Read();
control.Text = reader["nickname"].ToString();
}
}
connection.Close();
}
得到答案,现在我的代码看这个
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=names.mdb";
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT ID,nickname FROM names ORDER BY rnd(ID)";
foreach (Control control in Controls)
{
if (control is Label)
{
OleDbDataReader reader = command.ExecuteReader();
reader.Read();
control.Text = reader["nickname"].ToString();
reader.Close();
}
}
connection.Close();
感谢@MikeB在while循环中,您使用相同的文本填充每个标签。无论如何,如果ID是一个唯一的索引,你只能得到一个昵称,你能告诉我如何在我的代码中这样做吗?因为我是c语言的初学者,不知道怎么做,也不知道为什么,但对我来说,expression.oops中有一个错误-未定义的函数“NEWID”。我没看到你在使用MS Access。SQL已经根据我读到的内容进行了修改,但我不明白如何在我的代码中编写:你能帮我吗?@MikeB你的错误是你应该让读者使用语句,这样他们就可以处理了。您应该对命令和连接执行相同的操作。不要关闭读卡器,而是将其放入。您也应该对连接和命令执行同样的操作。@eatmailyo欢迎使用SO!不要写你自己的答案,你应该投票并接受MikeB的答案,因为它与你刚刚发布的答案几乎相同。@ScottChamberlain没有关闭阅读器,我的程序不起作用:要接受答案,请单击左上角的绿色复选标记。您不必向上投票。使用Using STATINTS呼叫。为您处置,为您处置呼叫关闭。您仍在关闭读卡器,您只是以正确的方式关闭它,并将其处理掉。