KTL 一个支持C++14编辑公式的K线技术工具平台 - 第五版,支持sqlite3,全新sqlite3zz语法超简单使用sqlite3; 添加方差等统计函数。
K,K线,Candle蜡烛图。
T,技术分析,工具平台
L,公式Language语言使用c++14,Lite小巧简易。
项目仓库:https://github.com/bbqz007/KTL
国内仓库:https://gitee.com/bbqz007/KTL
CoreAnimation for Windows: https://github.com/bbqz007/xw
zqt5 一个超简单的Qt5窗口语法: https://github.com/bbqz007/zhelper-qt5Widgets
zqlite3 一个超简单的流式语法,整合封装Sqlite3 capis 与 SQL 跟 c/c++程序绑定:https://github.com/bbqz007/sqlite3zz
KTL提供一个c++14编译平台,用户可以使用c++14编辑自定义技术指标等。
用户可以使用crt常用函数,c++标准库容器以及算法,c++14特性编程。
本期更新内容
添加方差等统计函数。
支持sqlite3 capi。
全新sqlite3zz流式语法,超简单使用sqlite3 capi,轻松绑定SQL跟c/c++程序
本平台在本期主要添加对sqlite3支持。
用户可以使用sqlite3存入结果,加载数据,分析数据等。
为方便使用sqlite3 capi,本平台开发了一个全新的sqlite3zz流式语法。
也许你是SQL高手,但是sqlite3 capi太繁琐,无法集中业务逻辑。
也许你轻舟熟驾CREATE, INSERT, UPDATE, SELECT,但是妨碍于不知如何整合在c/c++程序中运行,并绑定参数或结果。
也许太多问号要绑定,SQL语句是否写对了问号数量。
也许你忘了绑定的起始是0还是1,查文档调试太不想。
也许..., 还有一千零一个理由让你觉得麻烦。
现在本平台提供一个全新的sqlite3zz流式语法。
1. 对于基本的SQL语法应用,你甚至不用写任何SQL语句,也不必要认识SQL语法。
2. 简化批量插入更新流程。
3. 完全c++代码定义表结构。
4. 输出流(out << val)绑定参数变量。
5. 输入流(in >> 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,输入流查询count(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个示例,涉及create, insert, update, select的基本使用,完全可以不与SQL语法还有sqltie3 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 }
下期更新更加精彩。