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++ プログラミング » アプリケーション開発 » Embedded SQL を使用したアプリケーションの開発

 

ユーザの認証

Ultra Light データベースは、デフォルトのユーザ ID DBA とパスワード sql を使用して作成されるため、最初はこの初期ユーザとして接続します。新しいユーザは既存の接続から追加する必要があります。

ユーザ ID を変更することはできません。新しいユーザ ID を追加して、既存のユーザ ID を削除します。Ultra Light ではデータベースごとにユーザ ID が 4 つまで許可されます。

Palm OS において、ユーザが別のアプリケーションから元のアプリケーションに戻るたびにユーザ認証を行う必要がある場合は、PilotMain ルーチンを使用してユーザとパスワード情報のためのプロンプトを組み込んでください。

ユーザ認証の例

完全なサンプルは samples-dir\UltraLite\esqlauth ディレクトリにあります。次のコードは samples-dir\UltraLite\esqlauth\sample.sqc の一部です。

//embedded SQL
app() {
   ...
/* Declare fields */
   EXEC SQL BEGIN DECLARE SECTION;
      char uid[31];
      char pwd[31];
   EXEC SQL END DECLARE SECTION;
   db_init( &sqlca );
   ...
   EXEC SQL CONNECT "DBA" IDENTIFIED BY "sql";
   if( SQLCODE == SQLE_NOERROR ) {
      printf("Enter new user ID and password\n" );
      scanf( "%s %s", uid, pwd );
      ULGrantConnectTo( &sqlca,
         UL_TEXT( uid ), UL_TEXT( pwd ) );
      if( SQLCODE == SQLE_NOERROR ) {
         // new user added: remove DBA
         ULRevokeConnectFrom( &sqlca, UL_TEXT("DBA") );
      }
      EXEC SQL DISCONNECT;
   }
   // Prompt for password
    printf("Enter user ID and password\n" );
    scanf( "%s %s", uid, pwd );
    EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;

このコードでは、次のタスクを実行します。

  1. db_init を呼び出してデータベースの機能を開始する。

  2. デフォルトのユーザ ID とパスワードを使用して接続する。

  3. 接続に成功したら、新しいユーザを追加する。

  4. 新しいユーザが追加されたら、Ultra Light データベースから DBA を削除する。

  5. 切断する。更新されたユーザ ID とパスワードがデータベースに追加される。

  6. 更新されたユーザ ID とパスワードを使用して接続する。

次の項を参照してください。