Вы создали новую базу данных. Вместо ввода подробностей создания таблицы и вставки команд непосредственно в командную строку монитора 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 $
В
Как видите, подключиться к базе данных MySQL очень легко.
Обработка ошибок
Прежде чем мы перейдем к более сложным программам, полезно взглянуть на то, как MySQL обрабатывает ошибки. СУРБД MySQL использует ряд возвращаемых числовых кодов, предоставляемых дескриптором подключения. К двум обязательным подпрограммам относятся следующие:
unsigned int mysql_errno(MYSQL *connection);
и
char *mysql_error(MYSQL *connection);