Примеры создания базы данных

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