QuestDB数据库:C++基本使用
QuestDB 支持 C 和 C++ 编程语言。
要想使用C++链接使用数据库,你的电脑需要:1. Rust 1.61或者更新版本 2. C++17编译器 3. CMake 3.15 或更新版本。
在你已经安装并编译好QuestDB数据库(https://github.com/questdb/questdb),你还需要下载C++所需要的依赖项(https://github.com/questdb/c-questdb-client),下载好文件后,make编译一下文件。
#include <questdb/ingress/line_sender.hpp>
使用前需要包含这个头文件,注意的是想编译运行前,你需要链接一个libquestdb_client.so的共享库文件,不然会报 “error: ld returned 1 exit status”这样的错误,其实写代码报这种错几乎都是缺少共享库,然后编译器找不到你使用的函数。
export LD_LIBRARY_PATH=/home/hejiahao/QuestDB/c-questdb-client-main/examples:$LD_LIBRARY_PATH
这一步是为了让程序在编译时能够找到 libquestdb_client.so
这个共享库文件,并且在运行时系统找到它。所以要将库文件的路径添加到系统的库搜索路径中。
#include <iostream> #include <questdb/ingress/line_sender.hpp> #include <chrono> int main() { auto sender = questdb::ingress::line_sender::from_conf( "http::addr=localhost:9000;"); //链接数据库 questdb::ingress::line_sender_buffer buffer; buffer .table("room_controls") .symbol("channel_id","12819") .symbol("smpl_time","2024-07-01 17:09:15") .column("nanosecs", "219") .column("severity_id","5") .column("status_id","3") .column("num_val","1") .column("float_val","-206.442") .column("str_val","NULL") .column("datatype","NULL") .column("array_val", "NULL") .at(questdb::ingress::timestamp_nanos::now()); // To insert more records, call `buffer.table(..)...` again. sender.flush(buffer); return 0; }
然后根据一个项目简单写一个示例。运行一下,如图所示:
再简单做个查询操作: