您好我正在创建一个程序,当表单加载随机数据时将从数据库中检索,我的问题是不再重复数据的代码。 即时通讯使用vb 2008和sql数据库, 编程语言:C#
例如:
Data in Database
Word_ID | Word
1 | eye
2 | cheese
3 | mouse
然后表单加载它将检索随机数据并显示在标签
中示例输出:
干酪
因此奶酪现在不会显示在下一个随机
上我的代码:
SqlConnection conn =
new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\sony\Documents\Visual Studio 2008\Projects\Hangman_Final\Hangman_Final\hangman_db.mdf;Integrated Security=True;User Instance=True");
conn.Open();
SqlCommand command = conn.CreateCommand();
command.CommandText = "SELECT TOP 1 Words from word order by NEWID()";
command.CommandType = CommandType.Text;
SqlDataReader reader = command.ExecuteReader();
// display the results
while (reader.Read())
{
string output = reader["Words"].ToString();
label5.Text = output;
}
// close the connection
reader.Close();
conn.Close();
答案 0 :(得分:2)
将字词存储到List<String>
。从列表中随机索引获取一个元素,打印并删除它。
答案 1 :(得分:0)
只是将刚加载的单词包含为'和WORD&lt;&gt; 'previousWord''在你选择语句的where子句中?
答案 2 :(得分:0)
假设您在数据库表中存储了单词和整数索引,为什么不在C#中生成一个随机数(在您拥有的单词的最大数/索引之间)(使用Random)然后获取单词匹配索引。
答案 3 :(得分:0)
将单词存储在集合中并对其进行计数。那么使用随机?但这取决于你在数据库中获得了多少单词。
答案 4 :(得分:0)
以下是我如何做到这一点。如您的示例所示,数据库中的每条记录都有一个数字ID。我得到最小和最大ID,并为我想要的任何数量的记录建立一个随机数列表。我在此过程中排除重复的数字。使用整数列表在内存中处理此操作比重复数据库查询快得多。创建唯一随机数列表后,使用列表成员作为条件从数据库中提取记录。
如果您的ID不是连续的以及其他条件,您可以添加额外的检查。