Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл
<< На главную

Основы программирования в Linux - Мэтью Нейл

Читать онлайн Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 155 156 157 158 159 160 161 162 163 ... 324
Перейти на страницу:

 strcpy(ct.track[1], &quot;Kraftig bewegt&quot;);

 strcpy(ct.track[2], &quot;Feierlich und gemessen&quot;);

 strcpy(ct.track[3], &quot;Stürmisch bewegt&quot;);

 add_tracks(set);

Теперь поищите компакт-диск и извлеките информацию из первого найденного CD:

 res = find_cds(&quot;Symphony&quot;, &amp;cd_res);

 printf(&quot;Found %d cds, first has ID %dn&quot;, res, cd_res.cd_id[0]);

 res = get_cd(cd_res.cd_id[0], &amp;cd);

 printf(&quot;get_cd returned %dn&quot;, res);

 memset(&amp;ct, 0, sizeof(ct));

 res = get_cd_tracks(cd_res.cd_id[0], set);

 printf(&quot;get_cd_tracks returned %dn&quot;, res);

 printf(&quot;Title: %sn&quot;, cd.title);

 i = 0;

 while (i &lt; res) {

  printf(&quot;ttrack %d is %sn&quot;, i, ct.track[i]);

  i++;

 }

В заключение удалите компакт-диск:

 res = delete_cd(cd_res.cd_id[0]);

 printf(&quot;Delete_cd returned %dn&quot;, res);

Затем отключитесь и завершите работу программы:

 database_end();

 return EXIT_SUCCESS;

}

Реализация интерфейса

Теперь более трудная часть — реализация интерфейса, описанного вами. Вся она хранится в файле app_mysql.с.

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

#include &lt;stdlib.h&gt;

#include &lt;stdio.h&gt;

#include &lt;string.h&gt;

#include &quot;mysql.h&quot;

#include &quot;app_mysql.h&quot;

static MYSQL my_connection;

static int dbconnected = 0;

static int get_artist_id(char *artist);

Как вы видели ранее в этой главе, подключиться к базе данных очень просто, а отключиться от нее и того проще:

int database_start(char *name, char *pwd) {

 if (dbconnected) return 1;

 mysql_init(&amp;my_connection);

 if (!mysql_real_connect(&amp;my_connection, &quot;localhost&quot;,

  name, pwd, &quot;blpcd&quot;, 0, NULL, 0)) {

  fprintf(stderr, &quot;Database connection failure: %d, %sn&quot;,

   mysql_errno(&amp;my_connection), mysql_error(&amp;my_connection));

  return 0;

 }

 dbconnected = 1;

 return 1;

} /* database_start */

void database_end() {

 if (dbconnected) mysql_close(&amp;my_connection);

 dbconnected = 0;

} /* database_end */

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

Напоминаем о том, что программа будет отслеживать имена исполнителей автоматически:

int add_cd(char *artist, char *title, char* catalogue, int *cd_id) {

 MYSQL_RES *res_ptr;

 MYSQL_ROW mysqlrow;

 int res;

 char is[250];

 char es[250];

 int artist_id = -1;

 int new_cd_id = -1;

 if (!dbconnected) return 0;

Далее нужно проверить, существует ли уже исполнитель, если нет, то создать его. Обо всем этом заботится функция get_artist_id, которую вы скоро увидите:

 artist_id = get_artist_id(artist);

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

 mysql_escape_string(es, title, strlen(title));

 sprintf(is,

  &quot;INSERT INTO cd(title, artist_id, catalogue) VALUES('%s', %d, '%s')&quot;,

  es, artist_id, catalogue);

 res = mysql_query(&amp;my_connection, is);

 if (res) {

  fprintf(stderr, &quot;Insert error %d: %sn&quot;,

   mysql_errno(&amp;my_connection), mysql_error(&amp;my_connection));

  return 0;

 }

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

 res = mysql_query(&amp;my_connection, &quot;SELECT LAST_INSERT_ID()&quot;);

 if (res) {

  printf(&quot;SELECT error: %sn&quot;, mysql_error(&amp;my_connection));

1 ... 155 156 157 158 159 160 161 162 163 ... 324
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга