Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Ultra Light - C/C++ プログラミング » アプリケーション開発 » Ultra Light C++ API を使用したアプリケーションの開発

 

データベースへの接続

Ultra Light アプリケーションをデータベースに接続しないと、データを操作できません。この項では、Ultra Light データベースに接続するための方法について説明します。

サンプル・コードは、samples-dir\UltraLite\CustDB\ ディレクトリにあります。

Connection オブジェクトのプロパティ
  • コミット動作   Ultra Light C++ API には、オートコミット・モードはありません。各トランザクションの後には Conn->Commit() 文を指定します。トランザクションの管理を参照してください。

  • ユーザ認証   接続許可の付与と取り消しを行うメソッドを使用すると、アプリケーションのユーザ ID とパスワードを (それぞれデフォルト値である DBAsql から) 別の値に変更できます。各データベースは、最大 4 つのユーザ ID を保持できます。ユーザの認証を参照してください。

  • 同期   Connection オブジェクトのメソッドを使用すると、Ultra Light を統合データベースと同期できます。データの同期を参照してください。

  • テーブル   Ultra Light データベース・テーブルには、Connection オブジェクトのメソッドを使用してアクセスします。テーブル API を使用したデータへのアクセスを参照してください。

  • 準備文   SQL 文の実行を処理するメソッドが提供されます。SQL を使用したデータへのアクセスUltraLite_PreparedStatement クラスを参照してください。

Ultra Light データベースへの接続
♦  Ultra Light データベースに接続するには、次の手順に従います。
  1. Ultra Light ネームスペースを使用します。

    Ultra Light ネームスペースを使用すると、C++ インタフェースでクラスの省略名を使用できます。

    using namespace UltraLite;
  2. DatabaseManager オブジェクトと ULSqlca (Ultra Light SQL Communications Area) を作成し、初期化します。ULSqlca は、アプリケーションとデータベースの間の通信を処理する構造体です。

    DatabaseManager オブジェクトは、オブジェクト階層のルートにあります。DatabaseManager オブジェクトは、1 つのアプリケーションに 1 つだけ作成します。多くの場合、DatabaseManager オブジェクトは、アプリケーションに対してグローバルに宣言するのが最も効果的です。

    ULSqlca sqlca;
    sqlca.Initialize();
    DatabaseManager * dbMgr = ULInitDatabaseManager(sqlca);

    アプリケーションで SQL サポートが必要でなく、かつ Ultra Light ランタイムに直接リンクする場合、アプリケーションでは ULInitDatabaseManagerNoSQL を呼び出して ULSqlca を初期化できます。この方法を使用すると、アプリケーションのサイズを小さくできます。

    UltraLite_DatabaseManager_iface クラスを参照してください。

  3. 既存のデータベースへの接続を開きます。または、指定のデータベース・ファイルが存在しない場合は、新しいデータベースを作成します。OpenConnection 関数を参照してください。

    Ultra Light アプリケーションは空の初期データベースで配備することができます。また、Ultra Light データベースがまだ存在しない場合は、アプリケーションでデータベースを作成することもできます。初期データベースを配備するのが最も簡単なソリューションです。それ以外の場合は、アプリケーションで ULCreateDatabase 関数を呼び出してデータベースを作成したり、アプリケーションで必要なすべてのテーブルを作成したりする必要があります。ULCreateDatabase 関数を参照してください。

    Connection * conn = dbMgr->OpenConnection( sqlca, UL_TEXT("dbf=mydb.udb") );
    if( sqlca.GetSQLCode() == 
      SQLE_ULTRALITE_DATABASE_NOT_FOUND ) {
        printf( "Open failed with sql code: %d.\n" , sqlca.GetSQLCode() );
      }
    }
マルチスレッド・アプリケーション

各接続と、それを基に作成されるすべてのオブジェクトは、単一のスレッドで使用してください。アプリケーションが Ultra Light データベースにアクセスするのに複数のスレッドを必要とする場合は、スレッドごとに個別の接続が必要です。