MySQL & mSQL



              

Объектно-ориентированный доступ к базам данных на C++ - часть 2


#if defined(HAS_MSQL)

int connection;

#elif defined(HAS_MYSQL)

MYSQL mysql;

MYSQL 'connection; tfelse

#error База данных не определена,

#endif

public:

Connection(char *, char *);

Connection(char *, char *, char *, char *);

~Connection();

void Close();

void Connect(char 'host, char *db, char *uid, char *pw);

int GetAffectedRows();

char. *GetError();

int IsConnected();

Result *Query(char *);

};

#endif // l_connection_h

Методы, которые предоставляет класс Connection, одинаковы вне зависимости от используемой СУБД. Однако спрятанными в глубине класса окажутся закрытые члены, специфичные для той библиотеки, с которой он будет компилироваться. При установлении соединения единственными различными данными-членами станут те, которые представляют соединение с базой данных. Как отмечалось, mSQL для представления соединения использует величину типа int, a MySQL использует указатель на MYSQL и дополнительную величину типа MYSQL для установления соединения.

Установление соединения с базой данных

Всем приложениям, которые мы будем создавать с использованием этого API, для соединения с базой данных потребуется только создать новый экземпляр класса Connection с помощью одного из его конструкторов. Аналогично, приложение может отсоединиться, уничтожив экземпляр Connection . Оно может даже повторно использовать экземпляр Connection с помощью прямых обращений к методам Close() и Соnnect(). Пример 13-4 показывает реализацию конструкторов и метода Connect().

Пример 13-4. Соединение с MySQL и mSQL в классе Connection

#include "connection.h"

Connection::Connection(char *host, char *db) {

#if defined(HAS_MSQL)

connection = -1;

#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;




Содержание  Назад  Вперед