Вы создали новую базу данных. Вместо ввода подробностей создания таблицы и вставки команд непосредственно в командную строку монитора 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);

INSERT INTO children(childno, fname, age) VALUES (7,'Adrian',9);

Теперь вы можете снова зарегистрироваться в MySQL, выбрав базу данных foo, и выполнить данный файл. Для краткости и как пример для включения при желании в сценарий мы поместили пароль в командную строку:

$ mysql -u rick --password=secret foo

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

mysql> \. create_children.sql

Query OK, 0 rows affected (0.01 sec)

Query OK, 1 row affected (0.00 sec)

Мы убрали из вывода множество дублирующихся строк, например, строки, созданные в базе данных. Теперь, имея пользователя, базу данных и таблицу с хранящимися данными, самое время посмотреть, как обращаться к данным из программы.

Далее приведен файл connect1.с, который подключается от имени пользователя rick с паролем secret к серверу на локальной машине и базе данных foo.

#include

#include

#include "mysql.h"

int main(int argc, char *argv[]) {

 MYSQL *conn_ptr;

 conn_ptr = mysqlinit(NULL);

 if (!conn_ptr) {

  fprintf(stderr, "mysql_init failed\n");

  return EXIT_FAILURE;

 }

 conn_ptr = mysql_real_connect(conn_ptr, "localhost", "rick", "secret",

  "foo", 0, NULL, 0);

 if (conn_ptr) {

  printf("Connection success\n");

 } else {

  printf ("Connection failed\n");

 }

 mysql_close(conn_ptr);

 return EXIT_SUCCESS;

}

Теперь откомпилируйте программу и посмотрите, как вы это сделали. Возможно, придется вставить путь к файлам include и путь к библиотекам, а также указать, что файл нуждается в компоновке с библиотечным модулем mysqlclient. В некоторых системах может понадобиться опция -lz для компоновки с библиотекой упаковки (compression library). В системе авторов требуемая строка компиляции выглядит следующим образом:

$ gcc -I/usr/include/mysql connect1.с -L/usr/lib/mysql -lmysqlclient -о connect1

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

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

$ ./connect1

Connection success $

В главе 9 мы покажем, как создать make-файл и автоматизировать процесс подключения.

Как видите, подключиться к базе данных MySQL очень легко.

<p>Обработка ошибок</p>

Прежде чем мы перейдем к более сложным программам, полезно взглянуть на то, как MySQL обрабатывает ошибки. СУРБД MySQL использует ряд возвращаемых числовых кодов, предоставляемых дескриптором подключения. К двум обязательным подпрограммам относятся следующие:

unsigned int mysql_errno(MYSQL *connection);

и

char *mysql_error(MYSQL *connection);

Перейти на страницу:

Похожие книги