C# 从sql数据库检索随机数据不重复
嗨,我正在创建一个程序,当窗体加载随机数据时,它将从数据库中检索数据,我的问题是没有再次重复数据的代码。 我使用vb 2008和sql数据库, 编程语言:C 例如:C# 从sql数据库检索随机数据不重复,c#,sql,C#,Sql,嗨,我正在创建一个程序,当窗体加载随机数据时,它将从数据库中检索数据,我的问题是没有再次重复数据的代码。 我使用vb 2008和sql数据库, 编程语言:C 例如: Data in Database Word_ID | Word 1 | eye 2 | cheese 3 | mouse 然后表单加载它将检索随机数据并显示在标签中 示例输出: 奶酪 因此,奶酪现在不会在下一个随机菜单上显示 我的代码: SqlConnection conn = new SqlConnection(@"Data
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();
是否只是在select语句的where子句中包含刚才加载为“and word”的单词?假设将这些单词与整数索引一起存储在数据库表中,为什么不使用random在C中的最大单词数/索引之间生成一个随机数,然后获取与索引匹配的单词。将单词存储到列表中。从列表中随机索引获取一个元素,打印并删除它。将单词存储在集合中并计数。那就用随机的?但这取决于数据库中有多少单词。我是这样做的。正如在您的示例中,数据库中的每个记录都有一个数字ID。我获取最小ID和最大ID,并为任意数量的记录构建一个随机数列表。在此过程中,我排除了重复的数字。使用整数列表在内存中处理此问题比重复的数据库查询要快得多。创建唯一随机数列表后,将使用列表的成员作为标准从数据库中提取记录
如果您的ID不连续或存在其他情况,您可以添加其他检查。您的问题是…?数据库中有多少个单词?根据条目的不同,缓存单词并根据需要弹出它们会更可靠,从而确保永远不会得到重复的单词。否则,你需要测试word_id不在已找到的位置Adrian和Daryl Teo-问题是如何防止数据重复Brad-我的数据库中有40个单词你需要使用此方法跟踪所有以前的单词,而不仅仅是最后一个。我始终有与你相同的解决方案,AVD先生和您总是更快。^ ^此方法的效率取决于数据库中的字数以及从数据库中重新加载此列表的频率