![]() |
ODBC クライアント側
| ||||
![]() |
コネクティビティ (ODBC) サーバー側
|
ODBC ローカル アクセスを使用する場合においては以下の構成が必要です。
(サーバーは必要ありません。)
![]() |
ODBC クライアント側
|
Windows 用 Empress ODBC ドライバ は すべての Empress RDBMS 正式リリース製品に 含まれています。 Empress ODBC ドライバのインストールは、 Empress 製品 CD をWindows マシンの CD-ROM ドライブに挿入すると 自動的にスタートします。
Windows 用 Empress ODBC ローカル アクセス ドライバ は Windows 用 Empress RDBMS 中に含まれています。
データソース名 | ODBC データソース名を定義します。 |
詳細 | データソースの説明を定義します。 |
サーバー名 | サーバーマシンの ドメイン名あるいは IP アドレスを定義します。 このフィールドは ODBC ローカル アクセス ドライバでは定義できません。 |
ポート番号 | ODBCサービスポート番号を定義します。 このフィールドは ODBC ローカル アクセス ドライバでは定義できません。 |
データベース | 論理データベース名、またはEmpress データベースへの物理的なフルパス を定義します。 論理データベース名は ODBC クライアント / サーバーでの使用でのみ指定できます。また、指定された場合、 コネクティビティ(OBDC)サーバーコンフィグレーションファイル中に マップしなくてはなりません。 |
UID | デフォルトのログイン名を定義します。 |
PWD | デフォルトのパスワードを定義します。 |
トランスレーション | ODBC ドライバのトランスレーションライブラリを定義します。 |
トレース |
ODBC ドライバのトレースファイルを定義します。
|
トレースレベル | トレースレベル(1-3) を設定します。 トレースレベルはトレースメッセージの制御のために使われます。 この数が大きいほどより詳細なメッセージが生成されます。 |
ODBC 3.x | このボックスに設定された場合、 Empress ODBC ドライバは マイクロソフト ODBC 3.52 標準に準拠します。 ※Empress はこのオプションをセットするよう強く推奨します。 |
ODBC 2.x Level 2 | このボックスに設定された場合、 Empress ODBC ドライバは マイクロソフト ODBC 2 標準に準拠します。 |
ODBC 2.x Level 1 | このボックスに設定された場合 マイクロソフト ODBC 2 標準に従ったODBC 準拠 レベル 1 ドライバ として実行されることをEmpress ODBC ドライバに強制します。 |
General Records Buffer | フェッチされたレコードを格納するためのキャッシュメモリのサイズを定義します。 このサイズがフェッチされたレコードを格納するのに十分ではない場合、 それらを格納するためにファイルが使用されます。 プリフェッチされたレコード・キャッシュの値が 一般的なレコード・バッファの値より大きな場合、 プリフェッチされたレコードはファイルに格納されます。 |
Pre-Fetched Records Cache | SQLFetch が使用される場合にレコードを前もって格納するために使用されるスペースの サイズを定義します。 |
Bulk/Text Data Buffer | Bulk/Text アトリビュートデータのためのキャッシュサイズを定義します。 SQLGetData が呼び出された場合にだけ使用されます。 (例えばSQLBindColは関連しません。) |
Empress は ユーザーがODBC クライアントプログラムをコンパイルすることを 支援をするためのユーティリティ empocc を提供します。 Empress ローカル アクセス を利用する場合、 empocc -bcsを指定しコンパイルします。 (Empress ODBC クライアントサーバー機構へのバイパス、および Empress ローカルデータベースに直接アクセスするために このオプションを指定します。) empocc コマンドの詳細はリファレンスを参照してください。
Empress ODBC ライブラリは Empress 製品と一緒にインストール されます。 (分けてインストールする必要はありません。)
ODBC データベースはODBCデータソースファイル内で定義されます。 データソースファイルのデフォルトのファイル名はodbc.iniです。 そのファイルはODBCプログラムが起動される同じディレクトリに 置かなくてはなりませんが、ODBCデータソースファイルの名前および位置を 変更したい場合は Empress 変数 MSODBCINIFILEを使用することができます。
サンプルファイル odbc.ini
[Data Source Name] DESCRIPTION= SERVER= PORT=6322 DATABASE= TRACEFILE= TRACELEVEL= DEFAULTPWD= DEFAULTUID= ODBCLEVEL= ODBCVERSION= CACHE_SIZE=65536 CACHE_BTSIZE=131072 CACHE_FSIZE=131072
Data Source Name | ODBCデータソース名を定義します。 |
DESCRIPTION | データソースの説明を定義します。 |
SERVER | サーバーマシンの ドメイン名あるいは IP アドレスを定義します。 ODBC ローカル アクセスの場合、この値は LOCAL を設定します。 |
PORT | ODBC サービスポート番号を定義します。 ODBC ローカル アクセス データソースではこのフィールドは無視されます。 |
DATABASE | 論理データベース名、またはEmpress データベースへの物理的なフルパス を定義します。 論理データベース名は ODBC クライアント / サーバーでの使用でのみ指定できます。また、指定された場合、 コネクティビティ(OBDC)サーバーコンフィグレーションファイル中に マップしなくてはなりません。 |
DEFAULTUID | デフォルトログイン名を定義します。 |
DEFAULTPWD | デフォルトパスワードを定義します。 |
TRACEFILE |
ODBC ドライバトレースファイルを定義します。
|
TRACELEVEL | トレースレベルはトレースメッセージの制御のために使われます。 この数が大きいほどより詳細なメッセージが生成されます。 |
ODBCVERSION | Empress ODBC ドライバが準拠するマイクロソフト ODBC 標準のバージョンを定義します。 値は 03.52 か 02.50 だけを設定することができます。 Empress では ODBCVERSION に 03.52をセットすることを推奨します。 |
ODBCLEVEL | Empress ODBC ドライバが実行するマイクロソフト準拠レベルを設定します。 値は ODBCVERSIONが 02.50 をセットされた場合に 1 か 2 だけを設定することができます。 ODBCVERSIONに 03.52 がセットされている場合は無視します。 |
CACHE_FSIZE | フェッチされたレコードを格納するためのキャッシュメモリのサイズを定義します。 このサイズがフェッチされたレコードを格納するのに十分ではない場合、 それらを格納するためにファイルが使用されます。 プリフェッチされたレコード・キャッシュの値が 一般的なレコード・バッファの値より大きな場合、 プリフェッチされたレコードはファイルに格納されます。 |
CACHE_SIZE | SQLFetch が使用される場合にレコードを前もって格納するために使用されるスペースの サイズを定義します。 |
CACHE_BTSIZE | Bulk/Text アトリビュートデータのためのキャッシュサイズを定義します。 SQLGetData が呼び出された場合にだけ使用されます。 (例えばSQLBindColは関連しません。) |
setenv EMPODRV_TRACELEVEL 2 setenv EMPODRV_TRACEFILE ./drv2.log
上記では トレースレベルを 2、トレースファイルは drv2.logに設定しています。
Empress は ユーザーがODBC クライアントプログラムをコンパイルすることを 支援をするためのユーティリティ empocc を提供します。 Empress ローカル アクセス を利用する場合、 empocc -bcsを指定しコンパイルします。 (Empress ODBC クライアントサーバー機構へのバイパス、および Empress ローカルデータベースに直接アクセスするために このオプションを指定します。) empocc コマンドの詳細はリファレンスを参照してください。
既にEmpress RDBMSをインストールされている環境として説明します。
emppasswordユーティリティを使い Empress パスワード ファイル 中の Empress コネクティビティ(ODBC) サーバーにアクセスするためのユーザーの 設定とファイルの作成をおこないます。
emppassword -f パスワードファイル create
emppassword -f パスワードファイル add ユーザーログイン名
注意:
のセットアップをします。デフォルトでは
netserver.cfgです。
EMPRESSPATH/config/netserver.cfg
netserver.cfgの名前を示す環境変数は
MSNETSERVERCONFIGFILEです。
これは次のEMPRESSPATH/config/inifileファイルの中で定義されます。
MSNETSERVER
:
: common
:
NAME=empodbcsv
TYPE=odbc
HOST=localhost
....
SECURITY_CHECK_PASSWORD=
: SECURITY_PASSWORD_FILE=パスワードファイルの位置
....
MSNETSERVEREND
MSNETSERVER
:
: common
:
NAME=empodbcsv
TYPE=odbc
HOST=localhost
....
: SECURITY_CHECK_PASSWORD=
SECURITY_PASSWORD_FILE=パスワードファイルの位置 ....
MSNETSERVEREND
MSNETSERVERCONFIGFILE=netserver.cfg
setenv MSNETSERVERCONFIGFILE new_netserver.cfg
MSCONFIGFILEPATH="$HOME/.empress;$HOME;${EMPRESSPATH}/config"
setenv MSCONFIGFILEPATH "newpath"
SECURITY_PASSWORD_FILE=/etc/password
コネクティビティ(ODBC)サーバーコンフィグレーション のデフォルトを変更する必要がある場合は、 コネクティビティ(ODBC)サーバーコンフィグレーションファイルを 任意に作成してください。
サーバー側において以下のコマンドを使用し、 Empress コネクティビティ(ODBC)サーバーを起動してください。
$EMPRESSPATH/bin/empsvadm odbcサーバー名 start -f odbcサーバーコンフィグレーションファイル
odbc サーバー名は、
ネットワーク サービス コンフィグレーション ファイルの中のNAME
に設定したコネクティビティ (ODBC) サーバーの名前です。
デフォルトのコネクティビティ (ODBC)サーバー名はempodbcsvです。
(注意として前のステップで Empress コネクティビティ (ODBC) サーバー コンフィグレーション ファイル
を作成した場合のみ
-f odbcサーバーコンフィグレーションファイル
の指定が必要になります。)
注意:Empressは、各サーバーマシン上でひとつだけ Empress コネクティビティ(ODBC)サーバーの起動を認めます。 (1台で複数のコネクティビティサーバーの起動は認めていません)サーバー上でのコネクティビティ(ODBC)サーバーを起動は データベース管理者がおこなうことを推奨します。 これはEmpress RDBMS ファイルのための保護レベルを維持し、 また他のユーザが所有しているEmpress RDBMSファイルへの ODBCクライアントアプリケーションによる無許可のアクセスを防ぐのに有効です。
Empress コネクティビティ(ODBC)サーバーの管理は個別のマニュアルの中で説明されます。 Empress サーバーまた、 特にODBC(コネクティビティ)サーバーの使用法に関する詳細な情報は [Empress Servers]を参照してください。
$EMPRESSPATH/odbccl/exampleディレクトリにコピーされます。
アプリケーション動作の基本的なステップを示します。
main () { short i; char valsr[STRING_LEN]; long vallr; RETCODE err; /* Environment allocation */ check("SQLAllocEnv",SQLAllocEnv(&henv)); /* Data Base Connection allocation */ check("SQLAllocConnect",SQLAllocConnect(henv, &hdbc)); /* Establish a connection to a Data Source */ /* NOTE: You must specify [empress] data source section in odbc.ini file */ check("SQLConnect",SQLConnect(hdbc, (UCHAR FAR *)"empress", SQL_NTS, (UCHAR FAR *)LOGINNAME, SQL_NTS, (UCHAR FAR *)"", SQL_NTS)); /* Statement allocation */ check("SQLAllocStmt",SQLAllocStmt(hdbc, &hstmt)); /* Create a test table t with couple records */ check("create t (ID longinteger, name char)",SQLExecDirect(hstmt, (UCHAR FAR *)"create t (ID longinteger, name char)", SQL_NTS)); check("insert into t values (1, 'ana')",SQLExecDirect(hstmt, (UCHAR FAR *)"insert into t values (1, 'ana')", SQL_NTS)); check("insert into t values (2, 'fred')",SQLExecDirect(hstmt, (UCHAR FAR *)"insert into t values (2, 'fred')", SQL_NTS)); check("insert into t values (3, 'bill')",SQLExecDirect(hstmt, (UCHAR FAR *)"insert into t values (3, 'bill')", SQL_NTS)); check("SQLBindCol",SQLBindCol(hstmt, 1, SQL_C_LONG, &vallr, 0, &cbLenL)); /* Assign the storage and data type for the second column in a result set */ check("SQLBindCol",SQLBindCol(hstmt, 2, SQL_C_CHAR, valsr, STRING_LEN, &cbLenC)); /* retrieve records from table t */ check("select from t",SQLExecDirect(hstmt, (UCHAR FAR *)"select from t", SQL_NTS)); i=1; while (1) { /* Fetch records */ check("SQLFetch", err = SQLFetch(hstmt)); if (err) break; /* print table attributes from each fetched row */ printf("Row %d .. ID: %ld Name: \"%s\" \n", i++,vallr,valsr); } /* Drop a test table t */ check("drop table t",SQLExecDirect(hstmt, (UCHAR FAR *)"drop table t", SQL_NTS)); /* Free Statement allocation */ check("SQLFreeStmt",SQLFreeStmt(hstmt, SQL_DROP)); /* Disconnect status */ check("SQLDisconnect",SQLDisconnect(hdbc)); /* Free Data Base Connection allocation */ check("SQLFreeConnect",SQLFreeConnect(hdbc)); /* Free Environment allocation */ check("SQLFreeEnv",SQLFreeEnv(henv)); return 0; }プログラミングのよい習慣としてODBC 関数のそれぞれの呼び出しの後に 返り値をチェックすることです。 一般に返り値は下記のいずれかになります。
SQL_SUCCESS SQL_NO_DATA_FOUND SQL_INVALID_HANDLE SQL_NEED_DATA |
SQL_SUCCESS_WITH_INFO SQL_ERROR SQL_STILL_EXECUTING |
ODBC 関数の呼び出しチェックにおいて 取得可能な付加情報を得るために SQLError を呼ぶことを推奨します。
このテストプログラムは
他のSQL コマンド、また ODBC API 関数コールのチェックとして
修正して利用することができます。