• 検索結果がありません。

:データベースの作成とデータベースへの接続

ドキュメント内 Ultra Light C/C++ プログラミング 改訂 2007 年 3 月 (ページ 133-137)

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と入力します。

118 Copyright © 2007, iAnywhere Solutions, Inc.

ドキュメント内 Ultra Light C/C++ プログラミング 改訂 2007 年 3 月 (ページ 133-137)

関連したドキュメント