Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
4 / 4 / 2
Регистрация: 05.07.2014
Сообщений: 57
Записей в блоге: 2

Как выбрать случайную запись из базы данных?

19.09.2017, 21:59. Показов 3891. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать программу для запоминания английских слов. Нужно из таблицы базы данных получить случайную строку в которой содержится английское слово, его перевод и число равное количеству правильных ответов. В интернете не могу найти ответ. SELECT TOP 1 column FROM table ORDER BY NEWID() - везде советуют так, но у меня так не работает. Базы данных учу пару дней. Ещё посоветуйте книгу хорошую по этой теме.

Код который у меня есть.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Data.SqlClient;
 
namespace WordsConsole
{
    class Program
    {
        static void Main()
        {
            string conStr = @"Data Source=.\SQLEXPRESS; Initial Catalog=Words; Integrated Security=True;";
 
            SqlConnection connection = new SqlConnection(conStr);
            connection.Open();
 
            SqlCommand cmd = new SqlCommand("SELECT WordRu FROM MyWords WHERE WordId = 2; SELECT WordEn FROM MyWords WHERE WordId = 2;", connection); 
            
            string wordRu = (string)cmd.ExecuteScalar();
 
            Console.WriteLine(wordRu);
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2017, 21:59
Ответы с готовыми решениями:

Выбрать случайную запись среди выбранных данных в БД
Добрый день. Помогите найти решение пожалуйста. Есть БД с id и type. Записи идут по порядку возрастания id и им присваивают разные...

Как выбрать случайную строку с помощью Random.Next()?
Представим, у меня есть переменные типа стринг. Как с помощью рандом некст выбрать рандомную переменную\текст? А то столько планов из-за...

Как выводить случайную запись из БД
Здравствуйте, если уже была такая тема, тыкныте меня носом пожалуйста. имеется база данных, в ней есть таблица, к примеру message. В...

3
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
19.09.2017, 22:40
Лучший ответ Сообщение было отмечено svr как решение

Решение

cmd.ExecuteScalar возвращает первую колонку первой строки, то есть скаляр - одно единственное значение.
Вам же нужно вернуть целую строку. В этом случае нужно использовать cmd.ExecuteReader:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string conStr = @"Data Source=.\SQLEXPRESS; Initial Catalog=Words; Integrated Security=True;";
 
            using (var connection = new SqlConnection(conStr))
            {
                var command = connection.CreateCommand();
                command.CommandText = "SELECT top(1) WordRu, WordEn, [] FROM MyWords order by newid();";
                connection.Open();
                var reader = command.ExecuteReader(CommandBehavior.Default);
                if (reader.HasRows && reader.Read())
                {
                    var ru = reader.GetString(0);
                    var en = reader.GetString(1);
                    var val = reader.GetInt32(2);
                    Console.WriteLine($"Ru: {ru}, En: {en}, RightAnswers: {val}");
                }
            }
В тексте запроса только вместо квадратных скобок нужно подставить имя третей колонки в вашей таблице, которая соответствует количеству правильных ответов.

Добавлено через 10 минут
По поводу книг: если можете читать англоязычную литературу, то посоветую Itzik Ben-Gan. T-SQL Fundamentals 2012. Это про TSQL.
Как с ним работать из C# - Можете взять книгу Троелсена по C#.
По-моему, во всех его книгах были главы по ADO.NET с доходчивым объяснением всех нюансов работы с БД.
1
4 / 4 / 2
Регистрация: 05.07.2014
Сообщений: 57
Записей в блоге: 2
20.09.2017, 01:41  [ТС]
Спасибо, отлично работает!

Подскажите, что означает эта строка? - if (reader.HasRows && reader.Read())
Вы хорошо разбираетесь в C#?
0
102 / 24 / 12
Регистрация: 12.12.2013
Сообщений: 211
Записей в блоге: 1
20.09.2017, 07:21
Цитата Сообщение от svr Посмотреть сообщение
if (reader.HasRows && reader.Read())
Вам лучше к первоисточникам обратиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2017, 07:21
Помогаю со студенческими работами здесь

Как выбрать не существующее число из базы данных
как выбрать не существующее число из базы данных? к примеру: есть числа от 1 до 7. и 4 и 6 нету в этой последовательности, то как...

Как загрузить запись из базы данных?
У меня в базе данных есть таблица "Школы". Загружаю ее в DataGridView так: string sqlQuery = "SELECT * FROM Школы"; ...

Как удалить запись из базы данных ?
Вывожу записи вот таким вот кодом. <?php include "linkdb.php"; $result = mysql_query("SELECT * FROM questions ORDER BY id...

Как удалить запись из базы данных?
Как в С# удалить строку из базы данных

Как удалить выбранную запись со всей базы данных?
Есть база данных Access "Отдел кадров" состоящая из трех таблиц - сотрудники, больничный, и личная карточка. Хочу сделать увольнение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru