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

SAP Sybase SQL Anywhere 16.0 (中文) » UltraLite - C 和 C++ 编程 » 教程:使用 C++ API 构建 Windows 应用程序

 

第 4 课:向应用程序添加同步

在本课中,您将同步代码添加到应用程序,启动 MobiLink 服务器,然后运行应用程序以实现与统一数据库的同步。

前提条件

本课假定您已完成前面的所有课程。 请参见第 1 课:创建并连接到数据库

上下文和注释

在前几节课中创建的 UltraLite 数据库与 UltraLite 16 示例数据库同步。UltraLite 16 示例数据库中 ULCustomer 表的列包含本地 UltraLite 数据库中 customer 表的列。

 任务
  1. 将以下方法添加到 customer.cpp。此方法执行以下任务:

    • 通过调用 EnableTcpipSynchronization 来启用 TCP/IP 通信。同步还可以通过 HTTP、HTTPS 或 TLS 执行。

    • 设置脚本版本。MobiLink 同步由存储在统一数据库中的脚本控制。脚本版本确定要使用的脚本集。

    • 设置 MobiLink 用户名。此值用于 MobiLink 服务器处的验证。它与 UltraLite 数据库用户 ID 不同,尽管在某些应用程序中您可能希望赋予它们相同的值。

    • 将 download_only 参数设置为 true。缺省情况下,MobiLink 同步是双向的。此应用程序使用仅下载同步,因此表中的行不会上载到示例数据库中。



    static bool do_sync( ULConnection * conn )
    {
        ul_sync_info info;
        ul_stream_error * se = &info.stream_error;
      
        ULDatabaseManager::EnableTcpipSynchronization();
        conn->InitSyncInfo( &info );
        info.stream = "TCPIP";
        info.version = "custdb 12.0";
        info.user_name = "50";
        info.download_only = true;
        if( !conn->Synchronize( &info ) ) {
            _tprintf( "Synchronization error \n" );   
            _tprintf( "  stream_error_code is '%lu'\n", se->stream_error_code );
            _tprintf( "  system_error_code is '%ld'\n", se->system_error_code );
            _tprintf( "  error_string is '" );
            _tprintf( "%s", se->error_string );
            _tprintf( "'\n" );
            return false;
        }
        return true;
    }
  2. 在调用 do_select 方法后将下面的代码行添加到 main 方法:

    do_sync(conn);
  3. 通过运行 nmake 编译您的应用程序。

  4. 启动 MobiLink 服务器。

    在命令提示符处,运行以下命令:

    mlsrv16 -c "dsn=SQL Anywhere 16 CustDB;uid=ml_server;pwd=sql" -v -vr -vs -zu+ -o custdbASA.log

    -zu+ 选项提供自动添加用户的功能。-v+ 选项为所有消息启用详细记录。

  5. 通过在命令提示符下键入 customer 运行应用程序。

结果

MobiLink 服务器消息窗口显示指示同步进度的状态消息。如果同步成功,则最后一条消息显示 [同步完成]。

 另请参见