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++ プログラミング » チュートリアル:C++ API を使用したアプリケーションの構築

 

レッスン 4 :アプリケーションへの同期の追加

このレッスンでは、アプリケーションを、コンピュータ上で動作している統合データベースに同期する方法について説明します。

次の手順では、アプリケーションに同期コードを追加し、Mobile Link サーバを起動し、アプリケーションを実行して同期します。

前のレッスンで作成した Ultra Light データベースは、Ultra Light 11 サンプル・データベースと同期します。Ultra Light 11 の Sample データベースの ULCustomer テーブルのカラムには、作成したローカル Ultra Light データベースの customer テーブルのカラムが含まれます。

このレッスンは、Mobile Link 同期についての知識を持っていることを前提としています。

♦  アプリケーションへの同期の追加
  1. 以下のメソッドを customer.cpp に追加します。このメソッドでは、次のタスクを実行します。

    • ULEnableTcpipSynchronization を呼び出して、同期ストリームを TCP/IP に設定します。同期は、HTTP、HotSync、または HTTPS を使用しても実行できます。Ultra Light クライアントを参照してください。

    • スクリプト・バージョンを設定します。Mobile Link 同期は、統合データベースに保存されているスクリプトによって制御されます。スクリプト・バージョンは、使用するスクリプト・セットを識別します。

    • Mobile Link ユーザ名を設定します。この値は、Mobile Link サーバでの認証に使用されます。アプリケーションによっては、Mobile Link のユーザ ID と Ultra Light データベースのユーザ ID を同じに設定しますが、これらの ID はあくまでも別のものです。

    • download_only パラメータを true に設定します。デフォルトでは、Mobile Link 同期は双方向です。このアプリケーションでは、テーブルのローがサンプル・データベースにアップロードされないように、ダウンロード専用同期を使用します。

    bool do_sync( Connection * conn ) {
      ul_synch_info info;
      ul_stream_error * se = &info.stream_error;
      
      ULEnableTcpipSynchronization( Tutca.GetCA() );
      conn->InitSynchInfo( &info );
      info.stream = ULSocketStream();
      info.version = UL_TEXT( "custdb 11.0" );
      info.user_name = UL_TEXT( "50" );
      info.download_only = true;
      if( !conn->Synchronize( &info ) ) {
          _tprintf( _TEXT("Synchronization error \n" ));   
       _tprintf( _TEXT("  stream_error_code is '%lu'\n"), se->stream_error_code );
       _tprintf( _TEXT("  system_error_code is '%ld'\n"), se->system_error_code );
       _tprintf( _TEXT("  error_string is '") );
       _tprintf( _TEXT("%s"), se->error_string );
       _tprintf( _TEXT("'\n") );
       return false;
      }
      return true;
    }
  2. 次の行を、main メソッドの insert メソッドの呼び出しの直後、select メソッドの呼び出しの前に追加します。

    do_sync(conn);
  3. nmake を実行してアプリケーションをコンパイルします。

♦  データの同期
  1. Mobile Link サーバを起動します。

    コマンド・プロンプトから次のコマンドを実行します。

    mlsrv11 -c "dsn=SQL Anywhere 11 CustDB" -v+ -zu+

    -zu+ オプションを指定すると、ユーザの自動追加が行われます。-v+ オプションを指定すると、すべてのメッセージについて冗長ロギングがオンになります。

    このオプションの詳細については、Mobile Link サーバ・オプションを参照してください。

  2. コマンド・プロンプトで customer と入力してアプリケーションを実行します。

    Mobile Link サーバのウィンドウでは、同期の進行状況を示すステータス・メッセージが表示されます。同期が正しく行われると、最後に「同期が完了しました。」というメッセージが表示されます。