Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Как узнать результат команды SELECT

Ответить
Настройки темы
MySQL - [решено] Как узнать результат команды SELECT

Аватара для Apock

Пользователь


Сообщения: 75
Благодарности: 3

Профиль | Отправить PM | Цитировать


Взялся за изучение БД, прикрутил к C++Builder MySQL.
Как-то все потихоньку вроде идёт, но суть выполнения запросов никак понять не могу.
Я выполняю команду SELECT к примеру так:
Код: Выделить весь код
 Query1->SQL->Add("SELECT * FROM authors WHERE passw=37");
 Query1->Open();
Дальше я по имени поля вытаскиваю нужное значение или изменяю, не важно. Но возникают вопросы:
1. Если я собираюсь добавить новую запись, но при этом проверить, нет ли уже такой записи в ключевом поле. Надо использовать команду SELECT или как-то это по другому реализуется?
2. Как вообще узнать результат выполнения SELECT? Нашла она что-то или нет?
3. Если вдруг окажется, что строк с passw=37 несколько, куда они пойдут и как с ними работать?

-------
Говорят, что производители чипсетов не стоят на месте. Чушь. Как стоял завод корпорации 3dfx на перекрёстке 7-й авеню и 6-й дежавю, так и стоит.


Отправлено: 23:35, 07-02-2013

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Apock,
1) SELECT ... FROM ... WHERE ... ORDER BY и т.д.
2) По идее должна вернуть список кортежей.
3) А черть его знает Наверно список.
До программных взаимодействия с базами я еще не добрался. (Скорей всего будет питон).
MySQL Workbench
Очень полезный инструмент.
Как получите работающий SQL запрос, можно будет думать над C++ запросом/ответом/обработкой.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 00:13, 08-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Apock, 1. добавление записи и изменение существующей реализуется разными командами, поэтому сразу пытаемся добавить и анализируем ответ сервера.

Отправлено: 10:42, 08-02-2013 | #3


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Apock:
Как вообще узнать результат выполнения SELECT? Нашла она что-то или нет? »
Для этого лучше использовать, что то с агрегатной функцией. Например,
Код: Выделить весь код
SELECT COUNT(*) FROM table WHERE pass=xxx
Тогда запрос вернет скалярную величину, значение которой будет количество.
Для выполнения запроса есть методы (не могу сказать какие именно, не знаком с реализацией на С++), по идее которые должны возвращать:
- void, для выполнения запросов не возвращающих данных (update, unsert, delete...);
- простой тип данных, для возвращения единственного значения (select sum(xxx), select avg(xxx), select distinct xxx...);
- набор, для возвращения набора данных.

Цитата Apock:
Если вдруг окажется, что строк с passw=37 несколько, куда они пойдут и как с ними работать? »
Не совсем понятен вопрос.
При таком запросе возвращается набор данных. Работать можно с ним в цикле, как с "таблицей".


Так же неплохо использовать хранимые процедуры. Чтобы реже отправлять запросы.
Например.
Цитата Apock:
Если я собираюсь добавить новую запись, но при этом проверить, нет ли уже такой записи в ключевом поле »
В таком случае, вам необходимо сначала отправить запрос на проверку количества таких записей. Приходит ответ с сервера. Если 0, то добавляете. Если не 0 - нет.
То же самое можно реализовать в виде хранимой процедуры. Вы вызываете хранимую процедуру, и уже на стороне сервера происходят все эти сравнения.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:51, 09-02-2013 | #4


Аватара для Apock

Пользователь


Сообщения: 75
Благодарности: 3

Профиль | Отправить PM | Цитировать


Дошло наконец-то))
Просто в поиске очень много ссылок на примеры взаимодействия SQL с PHP и там запрос выглядит примерно так:
Код: Выделить весь код
$result = mysql_query("SELECT * FROM Persons");
А потом они уже уже с этой переменной result работают. Вот я и зациклился на этом - что мне за переменную такую надо объявить, чтоб из неё потом результаты тянуть.
А всё ведь гораздо проще. Компонент TQuery не просто выполняет запрос sql, но и получает результаты. Т.е. после запроса SELECT просто запрашиваем Query1->RowCount и получаем кол-во найденных строк.

Спасибо всем за помощь. Теперь дело пойдёт быстрее.

-------
Говорят, что производители чипсетов не стоят на месте. Чушь. Как стоял завод корпорации 3dfx на перекрёстке 7-й авеню и 6-й дежавю, так и стоит.


Отправлено: 23:23, 09-02-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Как узнать результат команды SELECT

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? MSI Скриптовые языки администрирования Windows 64 24-12-2020 18:20
CMD/BAT - Результат выполнения команды дописать в файл в определенную строку DR_WELL Скриптовые языки администрирования Windows 1 24-06-2011 04:57
[решено] каким образом можно узнать команды(ключи) для программы? smol84 Автоматическая установка приложений 5 03-10-2009 10:26
разный результат команды "browstat status" на разных компьютерах RSM2 Сетевые технологии 2 25-04-2006 09:44
bash: Как выполнить многострочный результат другой команды shivtorov Общий по Linux 12 04-10-2005 10:20




 
Переход