第三章 C++ SDK

3.1 环境准备

C++ SDK采用头文件形式分发,无需安装任何第三方库。只需将 sxdb_protocol.h 复制到项目include目录即可。

编译命令

Windows (MSVC)

cl /std:c++17 /I include main.cpp

Windows (MinGW)

g++ -std=c++17 -o client main.cpp -lws2_32

Linux / macOS

g++ -std=c++17 -o client main.cpp -lpthread

3.2 客户端核心类

SxdbClient是C++ SDK的核心类,封装了TCP连接、认证、SQL执行等全部功能。支持RAII资源管理,析构时自动断开连接。

方法

说明

返回值

connect(host, port)

连接服务器

bool

login(user, pass)

认证登录,获取token

bool

open_db(db)

打开指定数据库

bool

execute(db, sql)

执行DDL/DML语句

JVal

query(db, sql)

执行查询语句

JVal

close_db(db)

关闭数据库

bool

disconnect()

断开服务器连接

void

3.3 完整示例

示例:连接、建表、插入、查询

include "sxdb_protocol.h"

include

// 使用 SxdbClient 类 (定义在 protocol.h 中)

// 也可直接使用 sxdb::Protocol 类自行封装

int main() {

SxdbClient client;

// 1. 连接服务器

if (!client.connect("127.0.0.1", 31111)) {

std::cerr << "Failed to connect" << std::endl;

return 1;

}

// 2. 登录认证

if (!client.login("admin", "admin123")) {

return 1;

}

// 3. 打开数据库

client.open_db("myapp");

// 4. 创建表

client.execute("myapp",

"CREATE TABLE IF NOT EXISTS users("

"id INTEGER PRIMARY KEY AUTOINCREMENT, "

"name TEXT NOT NULL, age INTEGER)");

// 5. 插入数据

client.execute("myapp",

"INSERT INTO users(name,age) VALUES('\xe5\xbc\xa0\xe4\xb8\x89',25)");

// 6. 查询数据

auto result = client.query("myapp", "SELECT * FROM users");

auto& cols = result["data"]["columns"];

auto& rows = result["data"]["rows"];

for (size_t i = 0; i < rows.av.size(); i++) {

std::cout << rows[i][0].gi() << " "

<< rows[i][1].gs() << " "

<< rows[i][2].gi() << std::endl;

}

// 7. 清理

client.close_db("myapp");

client.disconnect();

return 0;

}

代码3-1 C++ 完整示例程序

运行输出

=== SXDB C++ Client Example ===

[1] Connecting to SXDB server (localhost:31111)...

Connected!

[2] Authenticating (admin/admin123)...

Authenticated!

[3] Opening database 'test'...

Database opened!

[4] Creating table 'users'...

Table created! code=0

[5] Inserting data...

Inserted 3 rows!

[6] Querying data...

id name age email


1 张三 25 zhangsan@example.com

2 李四 30 lisi@example.com

3 王五 28 wangwu@example.com

[7] Updating data...

Updated! affected=1

[8] Deleting data...

Deleted! affected=1

[Done] Disconnected from server.

图3-2 C++客户端运行结果

results matching ""

    No results matching ""