DuckDB全面挑战SQLite
DuckDB是一个现代的、可嵌入的、完全事务型的、使用C++编写的SQL数据库引擎。它的目标是提供一个小型、快速、可信赖的替代SQLite的解决方案。
以下是一个使用DuckDB创建数据库、执行查询和关闭数据库的简单示例:
#include "duckdb.hpp"
using namespace duckdb;
int main() {
// 创建一个新的DuckDB数据库实例
unique_ptr<DuckDB> database = make_unique<DuckDB>(nullptr);
// 打开一个连接到数据库的连接
unique_ptr<DuckDBConnection> connection = database->Connect("");
// 创建一个表
connection->Query("CREATE TABLE company(id INTEGER PRIMARY KEY, name VARCHAR(20));");
// 插入数据
connection->Query("INSERT INTO company VALUES (1, 'DuckDB');");
connection->Query("INSERT INTO company VALUES (2, 'SQLite');");
// 执行查询
auto result = connection->Query("SELECT * FROM company;");
if (result->success) {
// 打印结果
while (true) {
auto result_chunk = result->Fetch();
if (!result_chunk) {
break; // 没有更多的数据
}
for (size_t i = 0; i < result_chunk->size(); i++) {
int id = result_chunk->GetValue(0, i).integer();
string name = result_chunk->GetValue(1, i).str_value();
cout << id << " " << name << endl;
}
}
} else {
cerr << "查询失败: " << result->error_message << endl;
}
// 关闭数据库连接
connection.reset();
// 数据库实例将在unique_ptr销毁时自动关闭
return 0;
}
这段代码展示了如何使用DuckDB创建一个简单的数据库、表、插入数据和执行查询。它还演示了如何处理查询结果。这个例子是一个非常基础的用法,实际应用中DuckDB还支持更多高级特性,如视图、索引、触发器、存储过程等。
评论已关闭