1) Создание базы данных с использованием ODBC API функции SQLConfigDataSource. Такой вариант удобен в случае сервисных работ с базой данных. Так как мы не получаем непосредственно управление к базе данных.
SQLConfigDataSource( NULL, ODBC_ADD_DSN, "Firebird/InterBase(r) driver", "ODBC\0" "CREATE_DB = D:\\TestService\\test.fdb\0" "DESCRIPTION = My Firebird database\0" "UID = SYSDBA\0" "PWD = masterkey\0" "CHARSET = NONE\0" "PAGESIZE = 8192\0" "DIALECT = 3\0" );
2) Создание базы данных с использованием ODBC API функции SQLDriverConnect. Этот случай удобен при стартовых работах приложения пользователя. Когда драйвер выполняет соединение он отрабатывает код ошибки сервера и если в статусе ошибки код отсутствия базы, драйвер повторно выполняет запрос, но с предварительной операцией создания базы данных. При успешном завершении операции мы получаем доступ к этой базе.
UCHAR buffer[1024]; SWORD bufferLength; SQLDriverConnect( connection, hWnd, (UCHAR*)"DRIVER=Firebird/InterBase(r) driver;" "UID=SYSDBA;" "PWD=masterkey;" "PAGESIZE=8192;" "DBNAMEALWAYS=C:\\Temp\\NewDB.fdb", SQL_NTS, buffer, sizeof (buffer), &bufferLength, SQL_DRIVER_NOPROMPT );
3) Создание базы данных с использованием ODBC API функции SQLExecDirect. Этот случай интересен тем, что база создается на основе уже существующего соединения(клиента). То есть нам не нужно указывать "DRIVER=Firebird/InterBase(r) driver;", это будет взято из текущего соединения. И опять же мы не получаем доступа управления к базе. Для этого мы должны использовать SQLDriverConnect.
SQLExecDirect( hStmt, "CREATE DATABASE \'C:/TEMP/NEWDB00.FDB\'" " PAGE_SIZE 8192" " SET NAMES \'NONE\'" " USER \'SYSDBA\'" " PASSWORD \'masterkey\';", SQL_NTS );