Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

И наконец, параметр

flags
позволяет с помощью операции
OR
объединить несколько определений битовых масок, изменяя тем самым определенные характеристики применяемого протокола. Ни один из этих флагов не важен в данной вводной главе; все они подробно описаны в руководстве.

Если подключиться невозможно, возвращается

NULL
. В этом случае полезную информацию может предоставить подпрограмма
mysql_error
.

Когда вы прекращаете использовать подключение, обычно при завершении программы, вызовите подпрограмму

mysql_close
, как показано далее:

void mysql_close(MYSQL * connection);

Эта подпрограмма разорвет соединение с сервером. Если подключение устанавливалось с помощью

mysql_init
, память, отведенная под структуру дескриптора, освободится. Указатель станет неопределенным, и его нельзя будет применять в дальнейшем. Открытое ненужное подключение означает расточительное использование ресурсов, но повторное открытие подключения сопряжено с дополнительными накладными расходами, поэтому решайте сами, когда применять описанные подпрограммы.

Подпрограмма

mysql_options
(которую можно вызвать только между вызовами
mysql_init
и
mysql_real_connect
) позволит настроить некоторые параметры.

int mysql_options(MYSQL* connection, enum option_to_set, const char *argument);

Поскольку при каждом вызове

mysql_options
способна настроить только один параметр, ее следует вызывать отдельно для каждого параметра, который нужно задать. Вы можете применять эту подпрограмму необходимое количество раз, но все вызовы должны находиться между вызовами подпрограмм
mysql_init
и
mysql_real_connect
. Не все параметры подпрограммы имеют тип
char
, который следует приводить как
const char*
. Три самых часто используемых параметра приведены в табл. 8.11. И как всегда в расширенном интерактивном руководстве приведен полный список параметров.

Таблица 8.11

Enum
параметр
Действительный тип аргумента Описание
MYSQL_ОРТ_CONNECT_TIMEOUT
const unsigned int*
Количество секунд ожидания перед закрытием подключения из-за простоя
MYSQL_ОРТ_COMPRESS
Нет, используйте
NULL
Применять сжатие при сетевом подключении
MYSQL_INIT_COMMAND
const char*
Команда, отправляемая при каждом установлении подключения

Успешный вызов возвращает ноль. Поскольку эта подпрограмма предназначена для установки флагов, аварийное завершение всегда означает использование неверного параметра.

Для задания времени ожидания, равного семи секундам, используйте следующий фрагмент программного кода:

unsigned int timeout = 7;

...

connection = mysql_init(NULL);

ret = mysql_options(connection, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout);

if (ret) {

 /* Обработка ошибки */

 ...

}

connection = mysql_real_connect(connection ...)

Теперь, когда вы научились устанавливать, и закрывать ваше подключение, попробуем с помощью короткой программы проверить полученные знания на практике.

Начните с задания нового пароля для пользователя (в приведенном далее коде

rick
на
localhost
) и затем создайте базу данных
foo
, к которой будете подключаться. Вы все это уже знаете, поэтому мы просто приводим последовательность действий:

$ mysql -u root -р

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

mysql> GRANT ALL ON *.* TO rick@localhost IDENTIFIED BY 'secret';

Query OK, 0 rows affected (0.01 sec)

mysql> \q

Bye

$ mysql -u rick -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

mysql> CREATE DATABASE foo;

Query OK, 1 row affected (0.01 sec)

mysql> \q

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

Далее приведен файл create_children.sql:

– -

– - Create the table children

– -

CREATE TABLE children (

 childno int(11) NOT NULL auto_increment,

 fname varchar(30),

 age int(11),

 PRIMARY KEY (childno)

);

– -

– -Populate the table 'children'

– -

INSERT INTO children(childno, fname, age) VALUES (1,'Jenny',21);

INSERT INTO children(childno, fname, age) VALUES (2,'Andrew',17);

INSERT INTO children(childno, fname, age) VALUES (3,'Gavin',8);

INSERT INTO children(childno, fname, age) VALUES (4,'Duncan', 6);

INSERT INTO children(childno, fname, age) VALUES (5,'Emma',4);

INSERT INTO children(childno, fname, age) VALUES (6,'Alex',15);

Поделиться:
Популярные книги

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Иной. Том 5. Адская работа

Amazerak
5. Иной в голове
Фантастика:
боевая фантастика
городское фэнтези
технофэнтези
рпг
5.00
рейтинг книги
Иной. Том 5. Адская работа

Вернувшийся: Посол. Том IV

Vector
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
5.00
рейтинг книги
Вернувшийся: Посол. Том IV

Лекарь Империи

Карелин Сергей Витальевич
1. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи

Я Гордый часть 7

Машуков Тимур
7. Стальные яйца
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Я Гордый часть 7

Личный аптекарь императора

Карелин Сергей Витальевич
1. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора

Хозяин Теней 3

Петров Максим Николаевич
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяин Теней 3

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Ведун

Сухов Александр Евгеньевич
1. Второй шанс
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Ведун

Третий Генерал: Тома I-II

Зот Бакалавр
1. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Третий Генерал: Тома I-II

Дважды одаренный. Том V

Тарс Элиан
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
5.00
рейтинг книги
Дважды одаренный. Том V

Личный аптекарь императора. Том 4

Карелин Сергей Витальевич
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 4

Я – Стрела. Трилогия

Суббота Светлана
Я - Стрела
Любовные романы:
любовно-фантастические романы
эро литература
6.82
рейтинг книги
Я – Стрела. Трилогия

Черный Маг Императора 14

Герда Александр
14. Черный маг императора
Фантастика:
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 14