После того как установлено соединение и выбрана рабочая база данных, следующий шаг состоит в ее использовании для выполнения запроса (ов). Предназначенная для этих целей функция API-интерфейса называется mysql_query(). Она принимает два аргумента: дескриптор соединения, возвращенный функцией mysql_real_connect() , и сам выполняемый запрос.
Листинг 19.10.
/* выполнить запрос и получить результирующий набор */ mysql_query(&mysql, "SELECT * FROM employees");
В предыдущем примере используется запрос SELECT, но подобным образом, с функцией mysql_query() , можно задать команду INSERT, UPDATE или DELETE.
Листинг 19.11.
/* выполнить запрос и получить результирующий набор */ mysql_query(&mysql, "DELETE FROM employees WHERE user = 'john'");
Функция mysql_query() возвращает значение, равное нулю, если запрос выполнен успешно, и значение, отличное от нуля, - в обратном случае. Поэтому с точки зрения обработки исключительных ситуаций проверка этих значений перед продолжением выполнения алгоритма имеет существенное значение. Об этом свидетельствует и следующий фрагмент.
Листинг 19.12.
/* проверка выполнения запроса */
if (mysql_query,(&mysql "SELECT title, author FROM books") != 0)
{
fprintf (stderr, "Ошибка в запросе^"); exit();
}
Ниже представлен предыдущий пример в несколько доработанном виде с целью продемонстрировать как работает запуск запроса и возвращение диагностического сообщения, отражающего степень успешности выполнения этого запроса.
Листинг 19.13.
#include <stdio.h> #include <mysql.h> int main()
{
/* объявление структуры MYSQL */ MYSQL mysql; MYSQL_RES *result;
/* инициализация структуры MYSQL */
mysql_init(&mysql);
/* подключение к базе данных */
if (!(mysql_real_connect(&mysql, "localhost", "john", "doe",
"db1", 0, NULL, 0)))
{
fprintf(stderr, " Ошибка в соединении: %sn"); exit ();
}
/* выполнение запроса */
if (mysql_query(&mysql, "SELECT title, author FROM books") != 0;
{
fprintf(stdout, "Ошибка в запросе^");
}
else
{
fprintf(stdout, "Запрос выполнен успешно^");
}
/* очистка */ mysql_close(&mysql);
}
Поскольку строка запроса содержит ошибку, функция mysql_query() не возвращает значение 0, о чем будет выведено соответствующее диагностическое сообщение. Для получения более четких сообщений можно воспользоваться функцией mysql_error() (она описана в разделе "Обработка ошибок"). Если ошибка не обнаружена, обработка результирующего набора продолжается.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Выполнение запроса
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Управление соединением | Все о MySQL. Обработка результирующего набора |