VS2013 Sqlite3 操作指令
- extern "C"{
- #include "sqlite3.h"
- };
- #pragma comment(lib,"sqlite.lib")
- /*
- 为什么要 extern “C” ?这是C++的基础。要在 C++里使用一段 C 的代码,必须要用 extern “C” 括起来。C++跟 C虽然语法上有重叠,但是它们是两个不同的东西,内存里的布局是完全不同的,在C++编译器里不用extern “C”括起C代码,会导致编译器不知道该如何为 C 代码描述内存布局。可能在 sqlite3.c 里人家已经把整段代码都 extern “C” 括起来了,但是你遇到一个.c 文件就自觉的再括一次,也没什么不好。
- */
- //-----------------------------------------------------OK,尽情的爽吧---------------------------------------------------//
- 下载是我简单作用sqlite3的代码,不好看,请包涵!
- 详细教程在这:http://download.csdn.net/detail/q775968375/5970059
- void CMySqliteDlg::OnBnClickedOk()
- {
- // TODO: 在此添加控件通知处理程序代码
- //CDialogEx::OnOK();
- CTime m_time;
- m_time=CTime::GetCurrentTime();//获取当前时间日期
- FILE *fp=fopen("debug.txt","a+");
- fprintf(fp,"\n------------------------%s------------------------\n"
- ,m_time.Format(_T("%Y-%m-%d %H:%M:%S %A")));
- ::sqlite3 *db=NULL;
- ::sqlite3_stmt *stmt;
- char *sql=NULL,*error=NULL;
- const char *tail=NULL;
- int res;
- res=::sqlite3_open("MySqlite.db",&db);//打开数据库(不存在创建)
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"open database is failure:%s\n",::sqlite3_errmsg(db));
- return;
- }else fprintf(fp,"open database is success!\n");
- //create table
- sql="create table if not exists MyTable(Row integer primary key autoincrement,Content text)";
- res=::sqlite3_exec(db,sql,NULL,NULL,&error);
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"error create table:%s %s\n",error,::sqlite3_errmsg(db));
- return;
- }else fprintf(fp,"table is created\n");
- //insert
- sql="insert or replace into MyTable(Row,Content) values(?,?)";
- //sqlite3_prepare_v2的作用是将UTF-8格式的SQL语句转换为编译后的语句,并返回指向该语句的指针
- res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"insert is failure:%s %s\n",tail,::sqlite3_errmsg(db));
- return;
- }
- for(int i=0;i<3;i++){
- //::sqlite3_bind_int(stmt,1,0);//1:id 2:data
- ::sqlite3_bind_text(stmt,2,"数据库数据",-1,NULL);
- if(::sqlite3_step(stmt)!=SQLITE_DONE){
- fprintf(fp,"error update table:%s\n",::sqlite3_errmsg(db));
- }
- ::sqlite3_reset(stmt); //重新初始化该sqlite3_stmt对象绑定的变量。
- }
- ::sqlite3_finalize(stmt);
- //delete
- sql="delete from MyTable where Row=2";
- //res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
- res=::sqlite3_exec(db,sql,NULL,NULL,&error);
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"delete error:%s %s\n",error,::sqlite3_errmsg(db));
- return;
- }else fprintf(fp,"delete is success\n");
- ::sqlite3_finalize(stmt);
- //update
- sql="update MyTable set Content='修改后的数据' where Row=3";
- res=::sqlite3_exec(db,sql,NULL,NULL,&error);
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"update error:%s %s\n",error,::sqlite3_errmsg(db));
- return;
- }else fprintf(fp,"update is success\n");
- ::sqlite3_finalize(stmt);
- //query
- sql="select Row,Content from MyTable order by Row";
- res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
- if(res!=SQLITE_OK){
- ::sqlite3_close(db);
- fprintf(fp,"query is failure:%s %s\n",tail,::sqlite3_errmsg(db));
- return;
- }
- while(::sqlite3_step(stmt)==SQLITE_ROW){
- static int cnt=::sqlite3_column_count(stmt);
- for(int i=0;i<cnt;i++){
- fprintf(fp,"Data:%s\n",::sqlite3_column_text(stmt,i));
- }
- /*
- int row=::sqlite3_column_int(stmt,0);
- char *rowData=(char*)::sqlite3_column_text(stmt,1);
- if(rowData==NULL)rowData="NULL";
- */
- }
- //释放statement
- ::sqlite3_finalize(stmt);
- //关闭数据库
- ::sqlite3_close(db);
- ::fclose(fp);
- }
VS2013 Sqlite3 操作指令的更多相关文章
- linux常用操作指令
Linux常用操作指令: 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(a ...
- ARM指令集——条件执行、内存操作指令、跳转指令
ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...
- 汇编实现: C库常见函数,串操作指令作用
目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 二丶loads实现Strlen操作. 三丶stos的作用 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void _ ...
- 深入理解JVM(1)——栈和局部变量操作指令
将常量压入栈的指令 aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈i ...
- 【转】Reflector、reflexil、De4Dot、IL相关操作指令合集
PS:CTRL+F 输入你需要的内容,可以快速查找页面上的内容. 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. ...
- 汇编语言--微机CPU的指令系统(五)(字符串操作指令)
(11)字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的.字符串操作指令可对内存单元按字节.字或双字进行处理,并能根据操作对象的 ...
- Docker下操作指令
Docker下操作指令 以mysql为例 1.搜索镜像: #docker search mysql 2.拉取镜像 #docker pull mysql:5.7 3.加载镜像并绑定端口: #docker ...
- python文件操作指令
原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 常用的文件操作指令: python中对文件.文件夹(文件操 ...
- DOM操作指令整理
DOM操作指令整理: (1) 创建新节点: createDocumentFragment() 创建一个DOM片段 creatElement() 创建一个具体的元素 creatTextNode() 创建 ...
随机推荐
- 9,Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...
- 3195: [Jxoi2012]奇怪的道路
3195: [Jxoi2012]奇怪的道路 链接 思路: 因为一个点只会和它前后k个点连边,所以,记录下每个点的前k个点和它自己(共k+1个点)的状态,1表示奇数,0表示偶数. dp[i][j][s] ...
- 3336 /P1948电话网络(二分答案)
3336 电话网络 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 由于地震使得连接汶川县城电话线全部损坏,假如你是 ...
- Java学习关于时间操作的应用类--Date类、Calendar类及其子类
Date类 Date类封装了当期时间和日期.与Java1.0定义的原始版的Date类相比,Date类发生了本质的变化.在Java1.1发布时,原始版Date类定义的许多功能被移进Calendar类和D ...
- web项目中获取spring的bean对象
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中不通过注解的形式(@Resource.@Autowired)获取Spring配置的bean呢? Bean工厂(c ...
- 《Cracking the Coding Interview》——第12章:测试——题目6
2014-04-25 00:53 题目:你要如何测试一个分布式银行系统的ATM机? 解法:ATM是Automatic Teller Machine,取钱的.我想了半天,没找到什么很清晰的思路,也许是因 ...
- day04_08-while查询所有行
<?php $link = @mysql_connect('localhost','root',''); mysql_query('use test',$link); mysql_query(' ...
- 【转载】Unity插件研究院之自动保存场景
原文: http://wiki.unity3d.com/index.php?title=AutoSave 最近发现Unity老有自动崩溃的BUG. 每次崩溃的时候由于项目没有保存所以Hierarch ...
- (原)Unreal渲染模块 管线 - 着色器(1)
@author: 白袍小道 转载悄悄说明下 随缘查看,施主开心就好 说明: 本篇继续Unreal搬山部分的渲染模块的Shader部分, 主要牵扯模块RenderCore, ShaderCore, RH ...
- tinymce 上传图片空间(转)
转载自:http://www.cnblogs.com/ilovewindy/p/3823069.html 创建plugin后, editor_plugin.js中使用了 imageUploadWind ...