|
|
Example Configuration Program
The following example program is a console mode program that does everything a typical installation program needs to do. The program is organized into one subroutine for each task needed.
This program is run after the silent installation of Mimer SQL has completed, that is, Mimer SQL needs to be installed at this point.
In the example program the routines are prefixed by I_. All other calls are either to the C runtime library or ODBC.
3.1 Main Program
The main program looks as follows:
#include <windows.h> #include <odbcinst.h> #include <stdio.h> #include <stdlib.h> #include <sqlext.h> void main() { I_SetupLicense(); I_DefineDatabase(); I_CreateSystemDatabanks(); I_StartupDatabaseServer(); I_CreateApplicationObjects(); exit(0); }3.1.1 I_SetupLicense
The first example subroutine adds a Mimer SQL license key. Note that different machines usually have different installation numbers and license keys. This routine is only needed when an application is distributed with a license key.
void I_SetupLicense() { BOOL rc; rc = SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, "MIMER", "InstallationNo=12345\0" "LicenseKey=23CB23B7C8D33E2F206A23CDEF67\0" "DESCRIPTION=This is my license key\0\0"); if (!rc) { I_InstError("Error adding Mimer SQL license:"); } }3.1.2 I_DefineDatabase
This routine defines the ODBC data source and the Mimer SQL database parameters:
void I_DefineDatabase() { BOOL rc; rc = SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, "MIMER", "DSN=MyODBC\0DATABASE=MyMIMER\0" "DIRECTORY=c:\\MyDirectory\0" "USERS=200\0" "DESCRIPTION=This is my sample database\0\0"); if (!rc) { I_InstError("Error creating database definition:"); } }3.1.3 I_CreateSystemDatabanks
This routine starts a process that runs the Mimer SQL system databank generation program in silent mode.
void I_CreateSystemDatabanks() { BOOL rc; rc = SQLConfigDataSource(NULL, ODBC_CONFIG_SYS_DSN, "MIMER", "DATABASE=MyMimer\0" "SDBGEN=-pSYSPSW MyMimer\0\0"); if (!rc) { I_InstError("Error creating System Databanks:"); } }3.1.4 I_StartupDatabaseServer
The following code starts the database server:
void I_StartupDatabaseServer() { BOOL rc; rc = SQLConfigDataSource(NULL, ODBC_CONFIG_SYS_DSN, "MIMER", "DATABASE=MyMimer\0" "DbServer=START\0\0"); if (!rc) { I_InstError("Error starting database server:"); } }3.1.5 I_CreateApplicationObjects
This routine sets up the Mimer SQL database environment needed by the application. For clarity, error handling has been left out of this routine.
void I_CreateApplicationObjects() { RETCODE rc; HENV hEnv; HDBC hCon; HSTMT hStmt; rc = SQLAllocEnv(&hEnv); rc = SQLAllocConnect(hEnv, &hCon); rc = SQLConnect(hCon, "MyODBC", SQL_NTS, "SYSADM", SQL_NTS, "SYSPSW", SQL_NTS); rc = SQLAllocStmt(hCon, &hStmt); /* * Add application specific object creation here */ rc = SQLExecDirect(hStmt, "CREATE IDENT ...", SQL_NTS); . . . /* * Done, logout from database system */ rc = SQLDisconnect(hCon); rc = SQLFreeEnv(hEnv); }To make the sample complete, you should add code for creating the Mimer SQL objects such as databanks, users, tables, and views needed to run the application.
3.1.6 I_InstError
An example of the error handling used by the other examples follows:
void I_InstError(char *pszOperation) { RETCODE rc; WORD iError, cbErrorMsg; DWORD fErrorCode; char szErrorMsg[1000]; printf("%s\n", pszOperation); for (iError = 1; iError <= 8; iError++) { rc = SQLInstallerError(iError, &fErrorCode, szErrorMsg, sizeof(szErrorMsg), &cbErrorMsg); if (rc == SQL_NO_DATA_FOUND || rc == SQL_ERROR) { break; } printf("%d: Error code = %d, Message = %s\n", iError, fErrorCode, szErrorMsg); } }The routine SQLInstallerError is further described in SQLInstallerError and also in the Microsoft ODBC documentation.
|
Mimer Information Technology AB Voice: +46 18 780 92 00 Fax: +46 18 780 92 40 info@mimer.se |
|
|