从sql数据库中检索随机数据不再重复

时间:2011-10-07 13:20:06

标签: c# sql

您好我正在创建一个程序,当表单加载随机数据时将从数据库中检索,我的问题是不再重复数据的代码。 即时通讯使用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();

5 个答案:

答案 0 :(得分:2)

将字词存储到List<String>。从列表中随机索引获取一个元素,打印并删除它。

答案 1 :(得分:0)

只是将刚加载的单词包含为'和WORD&lt;&gt; 'previousWord''在你选择语句的where子句中?

答案 2 :(得分:0)

假设您在数据库表中存储了单词和整数索引,为什么不在C#中生成一个随机数(在您拥有的单词的最大数/索引之间)(使用Random)然后获取单词匹配索引。

答案 3 :(得分:0)

将单词存储在集合中并对其进行计数。那么使用随机?但这取决于你在数据库中获得了多少单词。

答案 4 :(得分:0)

以下是我如何做到这一点。如您的示例所示,数据库中的每条记录都有一个数字ID。我得到最小和最大ID,并为我想要的任何数量的记录建立一个随机数列表。我在此过程中排除重复的数字。使用整数列表在内存中处理此操作比重复数据库查询快得多。创建唯一随机数列表后,使用列表成员作为条件从数据库中提取记录。

如果您的ID不是连续的以及其他条件,您可以添加额外的检查。