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

ЖАНРЫ

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

sscanf(mysqlrow[1], "%d", &dest->cd_id[i]);

i++;

}

}

mysql_free_result(res_ptr);

}

 }

 return num_rows;

} /* find_cds */

Последнее, но не по значимости, — ваша реализация способа удаления компакт-дисков. В соответствии с политикой скрытого управления элементами таблицы исполнителей вы будете удалять исполнителя заданного компакт-диска, если нет других дисков

с той же самой строкой исполнителя. Удивительно, но в языке SQL нет средств описания удаления из нескольких таблиц, поэтому вы должны удалять данные из каждой таблицы по очереди:

int delete_cd(int cd_id) {

 int res;

 char qs[250];

 int artist_id, num_rows;

 MYSQL_RES *res_ptr;

 MYSQL_ROW mysqlrow;

 if (!dbconnected) return 0;

 artist_id = -1;

 sprintf(qs, "SELECT artist_id FROM cd WHERE artist_id = \

(SELECT artist_id FROM cd WHERE id = '%d')", cd_id);

 res = mysql_query(&my_connection, qs);

 if (res) {

fprintf(stderr, "SELECT error: %s\n", mysql_error(&my_connection));

 } else {

res_ptr = mysql_store_result(&my_connection);

if (res_ptr) {

num_rows = mysql_num_rows(res_ptr);

if (num_rows == 1) {

/* Исполнитель не упоминается в других CD */

mysqlrow = mysql_fetch_row(res_ptr);

sscanf(mysqlrow[0], "%d", &artist_id);

}

mysql_free_result(res_ptr);

}

 }

 sprintf(qs, "DELETE FROM track WHERE cd_id = '%d'", cd_id);

 res = mysql_query(&my_connection, qs);

 if (res) {

fprintf(stderr, "Delete error (track) %d: %s\n",

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

return 0;

 }

 sprintf(qs, "DELETE FROM cd WHERE id = '%d'", cd_id);

 res = mysql_query(&my_connection, qs);

 if (res) {

fprintf(stderr, "Delete error (cd) %d: %s\n",

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

return 0;

 }

 if (artist_id != -1) {

/* Теперь элемент artist не связан ни с одним CD, удалите его */

sprintf(qs, "DELETE FROM artist WHERE id = '%d'", artist_id);

res = mysqlquery(&my_connection, qs);

if (res) {

fprintf(stderr, "Delete error (artist) %d: %s\n",

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

}

 }

 return 1;

} /* delete_cd */

На

этом программный код завершается.

Для законченности и облегчения жизни добавьте файл Makefile. Возможно, вам придется откорректировать в нем путь к файлам

include
, зависящий от установки СУРБД MySQL в вашей системе.

all: арр

арр: app_mysql.с app_test.с app_mysql.h

 gcc -о app -I/usr/include/mysql appmysql.с app_test.с -lmysqlclient -L/usr/lib/mysql

В последующих главах вы увидите применение этого интерфейса с реальным интерфейсом GUI. Сейчас, если вы хотите увидеть изменения в базе данных по мере выполнения программы, мы предлагаем в одном окне выполнить программу по шагам с помощью отладчика gdb, а в другом следить за изменениями в базе данных. Если вы будете использовать MySQL Query Browser, не забудьте о необходимости обновлять отображаемые данные для отслеживания текущих изменений.

Резюме 

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

Вы получили основные сведения об установке MySQL и узнали об основах администрирования баз данных MySQL с помощью утилит-клиентов. Мы рассмотрели API языка С, который наряду с другими языками программирования может применяться с СУРБД MySQL. Вы также познакомились с некоторыми операторами языка SQL в действии.

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

И как напоминание, основной информационный ресурс MySQL — исходная страница MySQL на сайте www.mysql.com. 

Глава 9

Средства разработки

В этой главе рассматриваются средства разработки программ, применяемые в ОС Linux, некоторые из них доступны и в ОС UNIX. В дополнение к обязательным составляющим, таким как компиляторы и отладчики, Linux предлагает ряд средств, каждое из которых предназначено для одного вида работы и позволяет разработчику комбинировать эти средства новыми оригинальными способами. Такой подход — часть идеологии UNIX, которую унаследовала ОС Linux. В данной главе рассматривается несколько наиболее важных средств разработки и показан ряд примеров их использования для решения проблем. К этим средствам относятся следующие:

 команда

make
и make-файлы;

 управление исходным программным кодом с помощью RCS и CVS;

 написание интерактивного руководства;

 распространение программного обеспечения с помощью

patch
и
tar
;

 среды разработки.

Проблемы применения многочисленных исходных файлов

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

Поделиться с друзьями: