Извлечение случайных данных из базы данных sql не повторяется - PullRequest
0 голосов
/ 07 октября 2011

Привет, я создаю программу, в которой при загрузке формы случайные данные будут извлекаться из базы данных, и моя проблема в том, что я больше не повторяю данные. я использую 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 ]

2 голосов
/ 07 октября 2011

Сохранить слова в List<String>. Возьмите элемент со случайным индексом из списка, распечатайте его и удалите.

0 голосов
/ 07 октября 2011

Вот как я это сделал.Как и в вашем примере, каждая запись в базе данных имеет числовой идентификатор.Я получаю минимальный и максимальный ID и строю список случайных чисел для любого количества записей, которое я хочу.Я исключаю повторяющиеся номера во время этого процесса.Обработка этого в памяти с целочисленным списком намного быстрее, чем повторные запросы к базе данных.Как только список уникальных случайных чисел создан, записи извлекаются из базы данных, используя элементы списка в качестве критериев.

Вы можете добавить дополнительные проверки, если ваши идентификаторы не последовательные и для других условий.

0 голосов
/ 07 октября 2011

Храните слова в коллекции и считайте ее.Тогда использовать рандом?Но это зависит от того, сколько слов вы получили в базе данных.

0 голосов
/ 07 октября 2011

Предполагая, что вы храните слова вместе с целочисленным индексом в таблице базы данных, почему бы не сгенерировать случайное число (между максимальным числом / индексом ваших слов) в C # (используя Random), а затем получить совпадение слов индекс.

0 голосов
/ 07 октября 2011

Это просто вопрос включения слова, которое только что было загружено как 'и WORD <>' PreviousWord '' в предложение where в операторе select?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...