C++

首先按照说明编译并安装 LiteSync,或者使用适用于您平台的预编译二进制文件。您可以从免费版本开始。


示例代码
#include <sqlite_modern_cpp.h>
#include <thread>
#include <chrono>
#include <iostream>

using namespace sqlite;

int main() {
  try {
    // 打开数据库
    database db("file:app.db?node=secondary&connect=tcp://server:port");

    // 等待数据库就绪
    while(1) {
      string status;
      db << "pragma sync_status" >> status;
      std::cout << "状态:" << status << std::endl;
      if (status.find("\"db_is_ready\": true") != string::npos) break;
      std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    // 现在我们可以使用数据库连接了
    ...
  }
  catch (std::exception& e) {
    std::cerr << e.what() << std::endl;
  }
}


更新通知

当本地数据库因与远程节点同步而更新时,您的应用程序可以收到通知。通知是通过用户定义的函数实现的。

db.define("update_notification", [](std::string changes) {
  std::cout << "收到更新:" << changes << std::endl;
});


事务通知

当本地事务与远程节点同步时,您的应用程序可以收到通知。通知是通过用户定义的函数实现的。如果 `result` 参数中的值不是 "OK",则它包含错误消息。

db.define("transaction_notification", [](std::string sql, std::string result) {
  std::cout << "事务已同步(" << result << "):" << sql << std::endl;
});


同步状态

您的应用程序可以检查本地数据库与远程节点的同步状态。

std::string status;
db << "pragma sync_status" >> status;
std::cout << "同步状态:" << status << std::endl;


注意:通知函数由工作线程调用。应用程序不应该在通知函数内使用数据库连接,并且必须尽快返回!应用程序可以在返回之前将通知传输到主线程。




构建

g++ -o app app.cpp -std=c++14 -llitesync