sqlite3 c语言编程,SQLite教程(十三):C语言编程实例代码(1)
#include
#include
using namespace std;
void doTest()
{
sqlite3* conn = NULL;
//1. 打开数据库
int result = sqlite3_open("D:/mytest.db",&conn);
if (result != SQLITE_OK) {
sqlite3_close(conn);
return;
}
const char* createTableSQL =
"CREATE TABLE TESTTABLE (int_col INT, float_col REAL, string_col TEXT)";
sqlite3_stmt* stmt = NULL;
int len = strlen(createTableSQL);
//2. 准备创建数据表,如果创建失败,需要用sqlite3_finalize释放sqlite3_stmt对象,以防止内存泄露。
if (sqlite3_prepare_v2(conn,createTableSQL,len,&stmt,NULL) != SQLITE_OK) {
if (stmt)
sqlite3_finalize(stmt);
sqlite3_close(conn);
return;
}
//3. 通过sqlite3_step命令执行创建表的语句。对于DDL和DML语句而言,sqlite3_step执行正确的返回值
//只有SQLITE_DONE,对于SELECT查询而言,如果有数据返回SQLITE_ROW,当到达结果集末尾时则返回
//SQLITE_DONE。
if (sqlite3_step(stmt) != SQLITE_DONE) {
sqlite3_finalize(stmt);
sqlite3_close(conn);
return;
}
//4. 释放创建表语句对象的资源。
sqlite3_finalize(stmt);
printf("Succeed to create test table now.\n");
//5. 构造查询表数据的sqlite3_stmt对象。
const char* selectSQL = "SELECT * FROM TESTTABLE WHERE 1 = 0";
sqlite3_stmt* stmt2 = NULL;
if (sqlite3_prepare_v2(conn,selectSQL,strlen(selectSQL),&stmt2,NULL) != SQLITE_OK) {
if (stmt2)
sqlite3_finalize(stmt2);
sqlite3_close(conn);
return;
}
//6. 根据select语句的对象,获取结果集中的字段数量。
int fieldCount = sqlite3_column_count(stmt2);
printf("The column count is %d.\n",fieldCount);
//7. 遍历结果集中每个字段meta信息,并获取其声明时的类型。
for (int i = 0; i < fieldCount; ++i) {
//由于此时Table中并不存在数据,再有就是SQLite中的数据类型本身是动态的,所以在没有数据时
//无法通过sqlite3_column_type函数获取,此时sqlite3_column_type只会返回SQLITE_NULL,
//直到有数据时才能返回具体的类型,因此这里使用了sqlite3_column_decltype函数来获取表声
//明时给出的声明类型。
string stype = sqlite3_column_decltype(stmt2,i);
stype = strlwr((char*)stype.c_str());
//下面的解析规则见该系列的“数据类型-->1. 决定字段亲缘性的规则”部分,其链接如下:
//https://www.jb51.net/article/65424.htm
if (stype.find("int") != string::npos) {
printf("The type of %dth column is INTEGER.\n",i);
} else if (stype.find("char") != string::npos
|| stype.find("text") != string::npos) {
printf("The type of %dth column is TEXT.\n",i);
} else if (stype.find("real") != string::npos
|| stype.find("floa") != string::npos
|| stype.find("doub") != string::npos ) {
printf("The type of %dth column is DOUBLE.\n",i);
}
}
sqlite3_finalize(stmt2);
//8. 为了方便下一次测试运行,我们这里需要删除该函数创建的数据表,否则在下次运行时将无法
//创建该表,因为它已经存在。
const char* dropSQL = "DROP TABLE TESTTABLE";
sqlite3_stmt* stmt3 = NULL;
if (sqlite3_prepare_v2(conn,dropSQL,strlen(dropSQL),&stmt3,NULL) != SQLITE_OK) {
if (stmt3)
sqlite3_finalize(stmt3);
sqlite3_close(conn);
return;
}
if (sqlite3_step(stmt3) == SQLITE_DONE) {
printf("The test table has been dropped.\n");
}
sqlite3_finalize(stmt3);
sqlite3_close(conn);
}
int main()
{
doTest();
return 0;
}
//输出结果为:
//Succeed to create test table now.
//The column count is 3.
//The type of 0th column is INTEGER.
//The type of 1th column is DOUBLE.
//The type of 2th column is TEXT.
//The test table has been dropped.
sqlite3 c语言编程,SQLite教程(十三):C语言编程实例代码(1)相关推荐
- Wix 安装部署教程(十三) -- 多语言安装包
原文:Wix 安装部署教程(十三) -- 多语言安装包 这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根 ...
- c语言控制台光标的坐标范围,C语言之实现控制台光标随意移动的实例代码
原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...
- 用坐标实现物体的移动c语言,C语言之实现控制台光标随意移动的实例代码
原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...
- python获取电脑几核几线程_python编程测试电脑开启最大线程数实例代码
本文实例代码主要实现python编程测试电脑开启最大线程数,具体实现代码如下. #!/usr/bin/env python #coding=gbk import threading import ti ...
- java 抽样_Java编程实现二项分布的采样或抽样实例代码
本文研究的主要是Java编程实现二项分布的采样或抽样,下面是详细实现代码. 如下程序为n=100,p=0.9的二项分布采样,共采样10000次 package function; import org ...
- python测试电脑性能的代码_python编程测试电脑开启最大线程数实例代码
本文实例代码主要实现python编程测试电脑开启最大线程数,具体实现代码如下. #!/usr/bin/env python #coding=gbk import threading import ti ...
- 程序设计教程用c 语言编程,程序设计教程--用C 语言编程
程序设计教程--用C 语言编程 <程序设计教程--用C++语言编程>第四次印刷的勘误表 pIX. 第17行 错: 8.3 虚函数 对: 8.3 消息(成员函数调用)的动态绑定 p33. 第 ...
- 大一c语言程序设计项目教程课,C语言程序设计项目教程 教学课件 ppt 作者 王瑞红 C语言程序设计项目教程习题答案...
C语言程序设计项目教程 教学课件 ppt 作者 王瑞红 C语言程序设计项目教程习题答案 习题答案模块 1 C 语言基础知识1. 选择题(1)C 语言中运算对象必须是整型的运算符是 (B ).A. %= ...
- python编程入门教程下载-《Python编程从入门到精通》PDF高清完整版-PDF下载
作者: 叶维忠 出版年: 2018-11-1 页数: 429 装帧: 平装 ISBN: 9787115478801 内容简介 · · · · · · 本书循序渐进.由浅入深地详细讲解了Python语言 ...
- c语言程序设计项目教程视频,C语言程序设计项目教程
图书简介 本书充分结合高职高专学生实际,对内容科学取舍,突出算法,强调逻辑思路,吸纳先进的项目教学法的思想,非常注重编程能力的训练.全书共分8个模块,主要介绍了C语言的基础知识.程序设计的基本结构.数 ...
最新文章
- http header头设置反向代理不缓存
- 活动目录(Active Directory)安装
- linux挂载设备类型lvm,linux——管理系统设备之LVM的管理
- Java延迟加载的最佳实践应用示例!
- dubbo应用程序的单元测试环境搭建(springtest,powermock,mockito)
- SDUTOJ3469_深度优先搜索练习之神奇的矩环(DFS)
- LINUX系列:Shell命令
- 没有找到dllregisterserver输入点_Excel教程:框内打的几种输入方法,值得收藏
- 代码整洁之道——9、格式化
- 图:活动现场双屏管理系统V3-多线程抽奖版软件,完美升级收工!历时3个月,艰辛坎坷...
- bing翻译api php,PHP调用必应翻译API示例源码
- vs2008 SP1 安装问题小解决方案
- Fiddler:安卓抓包配置
- 如何将origin pro的界面切换变成中文显示?
- NC工具的使用说明教程
- python语言编程培训班价值有多大?
- export和import的答疑
- 选择尚学堂与传智播客的java培训?
- 计算机李宁,李宁的个人主页-西北工业大学教师个人主页
- Redis 大数据量(百亿级)Key存储需求及解决方案