5.
データベースに接続するための接続パラメータを定義します。次のコードでは、接続パラメータはハード・コードされています。実際のアプリケーション では、ロケーションは実行時に指定されることもあります。
以下のコードを
customer.cpp
にコピーします。static ul_char const * ConnectionParms = UL_TEXT( "UID=DBA;PWD=sql" )
UL_TEXT( ";DBF=C:¥¥tutorial¥¥cpp¥¥ULCustomer.udb" );
接続パラメータの詳細については、「
UltraLite_Connection_iface
クラス」216
ページを参照 してください。特殊文字の処理
ファイル名ロケーションの文字列にバックスラッシュ文字が含まれる場合は、バックスラッ シュ文字をもう 1 つ追加してエスケープする必要があります。
6.
アプリケーションでデータベース・エラーを処理するメソッドを定義します。Ultra Light
は、アプリケーションにエラーを通知するためのコールバック・メカニズムを備えています。開発環境において、この関数は予期しないエラーを処理するメカニズムとして 便利です。運用アプリケーションには、あらゆる一般的なエラー状況を処理するコードが含 まれているのが普通です。アプリケーションでは、Ultra Light 関数を呼び出すごとにエラー 確認するか、エラー・コールバック関数を使用するかを選択します。
コールバック関数のサンプルを次に示します。
ul_error_action UL_GENNED_FN_MOD MyErrorCallBack(
SQLCA * Tutca, ul_void * user_data, ul_char * message_param ) { ul_error_action rc;
(void) user_data;
switch( Tutca->sqlcode ){
// The following error is used for flow control - don't report it here case SQLE_NOTFOUND:
rc = UL_ERROR_ACTION_CONTINUE;
break;
default:
if (Tutca->sqlcode >= 0) { // warning or success rc = UL_ERROR_ACTION_DEFAULT;
} else { // negative is real error
_tprintf( _TEXT( "Error %ld: %s¥n" ), Tutca->sqlcode, message_param );
rc = UL_ERROR_ACTION_CANCEL;
} break;
} return rc;
}
Ultra Light
では、ほとんどの場合はエラーSQLE_NOTFOUND
を使用してアプリケーションのフローを制御しています。このエラーが通知されると、結果セットのループの終了がマー
116 Copyright © 2007, iAnywhere Solutions, Inc.
クされます。上記の汎用エラー・ハンドラは、このエラー条件に対してはメッセージを出力 しません。
エラー処理の詳細については、「エラー処理」
31
ページを参照してください。7.
データベースの接続を開くメソッドを定義します。データベース・ファイルがなかった場合は、エラー・メッセージが表示されます。そうでな い場合は、接続が確立されます。
Connection * open_conn( DatabaseManager * dm ) {
Connection * conn = dm->OpenConnection( Tutca, ConnectionParms );
if( conn == UL_NULL ) {
_tprintf( _TEXT("Unable to open existing database.¥n") );
} return conn;
}
8.
次のタスクを実行するmain
メソッドを実装します。♦
DatabaseManager オブジェクトをインスタンス化します。Ultra Light オブジェクトはすべ
て、
DatabaseManager
オブジェクトから作成されます。♦ エラー処理関数を登録します。
♦ データベースへの接続を開きます。
♦ データベースとの接続を閉じ、データベース・マネージャを終了します。
int main() {
ul_char buffer[ MAX_NAME_LEN ];
Connection * conn;
Tutca.Initialize();
ULRegisterErrorCallback(
Tutca.GetCA(), MyErrorCallBack, UL_NULL, buffer, sizeof (buffer));
DatabaseManager * dm = ULInitDatabaseManager( Tutca );
conn = open_conn( dm );
if( conn == UL_NULL ){
dm->Shutdown( Tutca );
Tutca.Finalize();
return 1;
} // main processing code to be inserted here dm->Shutdown( Tutca );
Tutca.Finalize();
return 0;
}
9.
ソース・ファイルのコンパイルとリンクを行います。ソース・ファイルのコンパイル方法は、コンパイラによって異なります。以下の手順は、
レッスン 1 :データベースの作成とデータベースへの接続
♦ コマンド・プロンプトを開き、チュートリアル・ディレクトリに変更します。
♦
makefile
という名前のmakefile
を作成します。♦
makefile
で、ディレクトリをインクルード・パスに追加します。IncludeFolders=/I"$(SQLANY10)¥h"
♦
makefile で、ディレクトリをライブラリ・パスに追加します。
LibraryFolders=/LIBPATH:"$(SQLANY10)¥ultralite¥win32¥386¥lib"
♦
makefile で、ライブラリをリンカ・オプションに追加します。
Libraries=¥ulimp.lib
Ultra Light
ランタイム・ライブラリの名前はulimp.lib
です。♦
makefile
で、コンパイラ・オプションを設定します。次のように、1
行でこれらのオプションを入力してください。
CompileOptions=/c /nologo /W3 /Od /Zi /DWIN32 /DUL_USE_DLL
♦
makefile
で、次のようにアプリケージョンのリンク命令を追加します。customer.exe: customer.obj
link /NOLOGO /DEBUG customer.obj $(LibraryFolders) $(Libraries)
♦
makefile
で、次のようにアプリケーションのコンパイル命令を追加します。customer.obj: customer.cpp
cl $(CompileOptions) $(IncludeFolders) customer.cpp
♦
makefile を実行します。
nmake
customer.exe
という実行ファイルが作成されます。10.
アプリケーションを実行します。コマンド・プロンプトで、customerと入力します。