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