2013-11-30 4 views
3

Как получить одну запись из базы данных, но случайным образом? Любая помощь, которую вы выдвинули, будет высоко оценена. Благодаря!Получение одного случайного значения из базы данных

Это то, что я сделал до сих пор

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ahmed'susopriore'\Documents\Visual Studio 2013\Projects\WebApplication11\WebApplication11\Questions.accdb"; 
    OleDbConnection connection = new OleDbConnection(ConnectionString); 
    Random rnd = new Random(); 
    rnd.Next(); 
    string myQuery = "SELECT * FROM Questions ORDER BY rnd()"; 
    OleDbCommand command = new OleDbCommand(myQuery, connection); 
    try 
    { 
     connection.Open(); 
     OleDbDataReader reader = command.ExecuteReader(); 
     while (reader.Read()) 
     { 
     ListBox1.Items.Add(reader["Number"]+""); 
     } 
    } 
    catch (Exception ex) 
    { 
     Label1.Text = "ERROR!"+ex; 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 
+0

http://stackoverflow.com/questions/580639/how-to-randomly-select-rows-in-sql –

+0

В чем проблема с существующим кодом? Вы получили сообщение об ошибке или не дали ожидаемых результатов? Что это делает, что вы не хотите, чтобы это делалось? –

+0

Существующий код, который у меня есть, теперь отображает все элементы в столбце и делает его в обратном порядке, вместо того чтобы делать это случайным образом. – user3052409

ответ

1

Если первичный ключ вопросов questionId Изменить код из:

string myQuery = "SELECT * FROM Questions ORDER BY rnd()"; 

к:

string myQuery = "SELECT Top 1 * FROM Questions ORDER BY rnd(questionID)"; 

Или:

string myQuery = "SELECT Top 1 * FROM Questions ORDER BY Rnd(-(100000*questionID)*Time()) 
+0

почти там ... он делает это в обратном порядке вместо случайного и отображает все элементы в этом столбце – user3052409

+0

. Я не последовал за вами. что вы имеете в виду под «' отображать все элементы в этом столбце ». –

+0

iv получил столбец« Number »в моей базе данных и его от 1 до 4. Используя цикл while, я добавил числа в ListBox1.Items.Add (читатель ["Number"] + ""); как только я запустил программу и нажимаю кнопку, которую они выходят, как 4321 – user3052409

Смежные вопросы