Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
#elif defined(HASJIYSQL)
connection = (MYSQL *)NULL; 
#else
#error Het соединения с базой данных, 
#endif
Connect(host, db, (char *)NULL, (char *)NULL); }
Connection::Connection(char 'host, char *db, char *uid, char *pw) {
#if defined(HASJISQL)
connection = -1;
#elif defined(HASJIYSQL)
connection = (MYSQL *)NULL;
#else
#error Нет соединения с базой данных,
#endif
Connect(host, db, uid, pw); 
}
void Connection: :Connect(char'host, char *db, char *uid, char *pw)
{
int state;
if( IsConnected() ) 
{
throw "Соединение уже установлено."; 
}
#if defined(HAS_MSQL)
connection = msqlConnect(host); 
state = msqlSelectDB(connection, db);
#elif defined (HAS.MYSQL) mysql_init(&mysql);
connection = mysql_real_connect(&mysql, host,
uid, pw,
db, 0, 0); #else
#error Нет соединения с базой данных.
#endif
if( !IsConnected() ) 
{
throw GetError();
}
if( state < 0 ) 
{
throw GetError();
} 
}
Оба конструктора разработаны с учетом различия параметров, требуемых для 
соединений MySQL и mSQL. Тем не менее эти API должны разрешать обоим 
конструкторам работать с каждой из баз данных. Это достигается игнорированием 
ID пользователя и пароля при вызове конструктора с четырьмя аргументами. 
Аналогично при вызове конструктора с двумя аргументами, серверу MySQL в 
качестве значений ID пользователя и пароля передаются значения null. 
Фактическое соединение с базой данных происходит в методе Connect ().
Метод Connect() инкапсулирует все шаги, необходимые для соединения. Для MySQL 
он вызывает метод mysql_real_connect() . Для mSQL жe сначала вызывается метод 
msqlConnect(), а затем msqlSelectDB() . При неудаче на любом из этапов 
Connect() возбуждает исключительную ситуацию.
Отсоединение от базы данных
Другой логической функцией класса Connection является отсоединение от базы 
данных и освобождение скрытых от приложения ресурсов. Эту функцию осуществляет 
метод Close (). В примере 13-5 показано, как происходит отсоединение от MySQL и 
mSQL.
Пример 13-5. Освобождение ресурсов базы данных
Connection::"Connection() {
if( IsConnected() ) {
Close();
} }
void Connection::Close() {
if( !IsConnected() ) 
{ 
return;
} 
#if defined(HAS_MSQL)
msqlClose(connection);
connection = -1;
#elif defined(HAS_MYSQL)
mysql_close(connection);
connection = (MYSQL *)NULL;
#else
#error Нет соединения с базой данных, tfendif }
Методы mysql_close() и msqlClose() освобождают ресурсы, используемые 
соединениями с MySQL и mSQL соответственно.
Выполнение обращений к базе данных
В промежутке между открытием соединения и закрытием базе данных обычно 
посылаются команды. Класс Connection делает это с помощью метода Query(), 
 
<<-[Весь Текст]
Страница: из 157
 <<-