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