ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

KTL 一个支持C++14编辑公式的K线技术工具平台 - 第五版,支持sqlite3,全新sqlite3zz语法超简单使用sqlite3; 添加方差等统计函数。

2022-04-18 15:32:59  阅读:294  来源: 互联网

标签:abc 14 para auto c++ SQL sqlite3 第五版 select


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     }

 

下期更新更加精彩。

标签:abc,14,para,auto,c++,SQL,sqlite3,第五版,select
来源: https://www.cnblogs.com/bbqzsl/p/16150666.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[[email protected]]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有