第五版,支持sqlite3

K,烛台,烛台。

T、技术分析、工具平台

l、公式语言使用c++14,精简版小巧简洁。

项目仓库:

国内仓库:

为了 :

zqt5 一个超级简单的Qt5窗口语法:

一种超简单的流式语法,将打包与 SQL 和 c/c++ 程序绑定集成在一起:

KTL提供c++14编译平台,用户可以使用c++14编辑自定义技术指标等。

用户可以使用 CRT 常用函数、C++ 标准库容器和算法,以及 C++14 特性编程。

本期更新

添加方差等统计功能。

支持卡皮。

新的流式语法,超级简单的使用capi,轻松绑定SQL和c/c++程序

本平台主要在此问题上增加支持。

用户可以用来保存结果、加载数据、分析数据等。

为了方便使用 capi,该平台开发了一种新的流式语法。

也许你是 SQL 高手,但是 capi 太繁琐,无法集中业务逻辑。

可能你对小船很熟悉, , , , 却不知道如何将它集成到 ac/c++ 程序中并绑定参数或结果。

可能有太多的问号要绑定,SQL 语句是否写了正确的问号个数。

可能你忘记了绑定的开始是 0 还是 1,不想查看文档进行调试。

也许……,还有一千零一个麻烦的理由。

现在该平台提供了一种新的流式语法。

1. 对于基本的 SQL 语法应用,你甚至不需要编写任何 SQL 语句,也不需要了解 SQL 语法。

2.简化批量插入更新过程。

3.完整的 C++ 代码来定义表结构。

4.输出流(out > val)将结果输出到一个变量。

6.自动生成 SQL 语句。

7.在编译时静态检测类型绑定。

示例 1,C++ 代码定义了表结构。

1   auto tbl2 = make_zqlite3_table(
2         select_para<int>("1"),
3         select_para<string>("2"),
4         select_para<double>("dbl"),
5         select_para<vector<char>>("blob"),                           
6         index_para("1", "2"),
7         index_para("1", "2"));
8         
9    

示例2、自动生成SQL语句

1     cout << tbl2.create_table_statment("abc") << endl;
2     cout << tbl2.insert_statment("abc") << endl;
3     cout << tbl2.update_statment("abc") << endl;
4     cout << tbl2.select_statment("abc") << endl;

1 CREATE TABLE IF NOT EXISTS `abc` (`1` INTEGER, `2` VARCHAR, `dbl` REAL, `blob` BLOB, UNIQUE (`1`  DESC, `2`  DESC), UNIQUE (`1`  DESC, `2`  DESC));

2 INSERT INTO `abc` (`1`, `2`, `dbl`, `blob`) VALUES (?,?,?,?);
3 UPDATE `abc` SET `1` = ?, `2` = ?, `dbl` = ?, `blob` = ?;
4 SELECT `1`, `2`, `dbl`, `blob` FROM `abc` ;

示例3,输出流绑定参数变量,批量插入和更新。

 1     tbl2.open_db("db");
 2     tbl2.create_table("abc");
 3     {
 4         auto oz = tbl2.insert_into("abc");
 5         auto ou = tbl2.update_where("abc", "where `1`=? AND `2` = ?"); 
 6         oz.begin_trans();
 7         oz(1, "2", 4., {0, 0});
 8         oz << 2 << "e" << 1. << make_pair((char*)NULL, 0) << ios_base::end;
 9         if (oz.ignored())
10             ou << 2 << "e" << 1. << make_pair((char*)NULL, 0) << where_para<int>(2) << where_para<string>("e") << ios_base::end;
11         oz.commit_trans();    

12     }

示例 4,输入流查询计数(0) 输入到变量。

1 auto cnttbl = make_zqlite3_table(select_para<int>("count(0)").expr());
2     cnttbl.open_db("db");
3     {
4         //// select statment would not lock the database until finalized.
5         auto iz6 = cnttbl.select_from("abc");
6         int cnt = 0;
7         iz6 >> ios_base::beg >> cnt >> ios_base::end;
8         cout << cnt << endl;
9     }

以上4个例子,涉及到, , , 的基本使用,完全不需要处理SQL语法和capi。

示例 5,内联输入流查询。

 1 auto join = make_zqlite3_table(
 2         select_para<int>("a.`1`").expr(),

 3         select_para<int>("b.`double`").expr());
 4      5     join.open_db("db");
 6     {
 7         auto ij = join.select_from2("abc a, table1 b limit 1");
 8         auto row = join.create_row();
 9         ij >> ios_base::beg;
10         for (; !ij.eof(); ij >> ios_base::beg)
11         {
12             ij >> std::get<0>(row)
13                 >> std::get<1>(row)
14                 >> ios_base::end;
16             cout << std::get<0>(row) << ", " 
17                 << std::get<1>(row) << endl;
18         }
19     }

下一次更新会更精彩。

© 版权声明
THE END
喜欢就支持一下吧
点赞202赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容