1. extern "C"{
  2. #include "sqlite3.h"
  3. };
  4. #pragma comment(lib,"sqlite.lib")
  5. /*
  6. 为什么要 extern “C” ?这是C++的基础。要在 C++里使用一段 C 的代码,必须要用 extern “C” 括起来。C++跟 C虽然语法上有重叠,但是它们是两个不同的东西,内存里的布局是完全不同的,在C++编译器里不用extern “C”括起C代码,会导致编译器不知道该如何为 C 代码描述内存布局。可能在 sqlite3.c 里人家已经把整段代码都 extern “C” 括起来了,但是你遇到一个.c 文件就自觉的再括一次,也没什么不好。
  7. */
  8. //-----------------------------------------------------OK,尽情的爽吧---------------------------------------------------//
  9. 下载是我简单作用sqlite3的代码,不好看,请包涵!
  10. 详细教程在这:http://download.csdn.net/detail/q775968375/5970059
  11. void CMySqliteDlg::OnBnClickedOk()
  12. {
  13. // TODO: 在此添加控件通知处理程序代码
  14. //CDialogEx::OnOK();
  15. CTime m_time;
  16. m_time=CTime::GetCurrentTime();//获取当前时间日期
  17. FILE *fp=fopen("debug.txt","a+");
  18. fprintf(fp,"\n------------------------%s------------------------\n"
  19. ,m_time.Format(_T("%Y-%m-%d %H:%M:%S %A")));
  20. ::sqlite3 *db=NULL;
  21. ::sqlite3_stmt *stmt;
  22. char *sql=NULL,*error=NULL;
  23. const char *tail=NULL;
  24. int res;
  25. res=::sqlite3_open("MySqlite.db",&db);//打开数据库(不存在创建)
  26. if(res!=SQLITE_OK){
  27. ::sqlite3_close(db);
  28. fprintf(fp,"open database is failure:%s\n",::sqlite3_errmsg(db));
  29. return;
  30. }else fprintf(fp,"open database is success!\n");
  31. //create table
  32. sql="create table if not exists MyTable(Row integer primary key autoincrement,Content text)";
  33. res=::sqlite3_exec(db,sql,NULL,NULL,&error);
  34. if(res!=SQLITE_OK){
  35. ::sqlite3_close(db);
  36. fprintf(fp,"error create table:%s %s\n",error,::sqlite3_errmsg(db));
  37. return;
  38. }else fprintf(fp,"table is created\n");
  39. //insert
  40. sql="insert or replace into MyTable(Row,Content) values(?,?)";
  41. //sqlite3_prepare_v2的作用是将UTF-8格式的SQL语句转换为编译后的语句,并返回指向该语句的指针
  42. res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
  43. if(res!=SQLITE_OK){
  44. ::sqlite3_close(db);
  45. fprintf(fp,"insert is failure:%s %s\n",tail,::sqlite3_errmsg(db));
  46. return;
  47. }
  48. for(int i=0;i<3;i++){
  49. //::sqlite3_bind_int(stmt,1,0);//1:id  2:data
  50. ::sqlite3_bind_text(stmt,2,"数据库数据",-1,NULL);
  51. if(::sqlite3_step(stmt)!=SQLITE_DONE){
  52. fprintf(fp,"error update table:%s\n",::sqlite3_errmsg(db));
  53. }
  54. ::sqlite3_reset(stmt); //重新初始化该sqlite3_stmt对象绑定的变量。
  55. }
  56. ::sqlite3_finalize(stmt);
  57. //delete
  58. sql="delete from MyTable where Row=2";
  59. //res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
  60. res=::sqlite3_exec(db,sql,NULL,NULL,&error);
  61. if(res!=SQLITE_OK){
  62. ::sqlite3_close(db);
  63. fprintf(fp,"delete error:%s %s\n",error,::sqlite3_errmsg(db));
  64. return;
  65. }else fprintf(fp,"delete is success\n");
  66. ::sqlite3_finalize(stmt);
  67. //update
  68. sql="update MyTable set Content='修改后的数据' where Row=3";
  69. res=::sqlite3_exec(db,sql,NULL,NULL,&error);
  70. if(res!=SQLITE_OK){
  71. ::sqlite3_close(db);
  72. fprintf(fp,"update error:%s %s\n",error,::sqlite3_errmsg(db));
  73. return;
  74. }else fprintf(fp,"update is success\n");
  75. ::sqlite3_finalize(stmt);
  76. //query
  77. sql="select Row,Content from MyTable order by Row";
  78. res=::sqlite3_prepare_v2(db,sql,-1,&stmt,&tail);
  79. if(res!=SQLITE_OK){
  80. ::sqlite3_close(db);
  81. fprintf(fp,"query is failure:%s %s\n",tail,::sqlite3_errmsg(db));
  82. return;
  83. }
  84. while(::sqlite3_step(stmt)==SQLITE_ROW){
  85. static int cnt=::sqlite3_column_count(stmt);
  86. for(int i=0;i<cnt;i++){
  87. fprintf(fp,"Data:%s\n",::sqlite3_column_text(stmt,i));
  88. }
  89. /*
  90. int row=::sqlite3_column_int(stmt,0);
  91. char *rowData=(char*)::sqlite3_column_text(stmt,1);
  92. if(rowData==NULL)rowData="NULL";
  93. */
  94. }
  95. //释放statement
  96. ::sqlite3_finalize(stmt);
  97. //关闭数据库
  98. ::sqlite3_close(db);
  99. ::fclose(fp);
  100. }

VS2013 Sqlite3 操作指令的更多相关文章

  1. linux常用操作指令

    Linux常用操作指令: 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(a ...

  2. ARM指令集——条件执行、内存操作指令、跳转指令

    ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...

  3. 汇编实现: C库常见函数,串操作指令作用

    目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 二丶loads实现Strlen操作. 三丶stos的作用 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void _ ...

  4. 深入理解JVM(1)——栈和局部变量操作指令

    将常量压入栈的指令 aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈i ...

  5. 【转】Reflector、reflexil、De4Dot、IL相关操作指令合集

    PS:CTRL+F 输入你需要的内容,可以快速查找页面上的内容. 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. ...

  6. 汇编语言--微机CPU的指令系统(五)(字符串操作指令)

    (11)字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的.字符串操作指令可对内存单元按字节.字或双字进行处理,并能根据操作对象的 ...

  7. Docker下操作指令

    Docker下操作指令 以mysql为例 1.搜索镜像: #docker search mysql 2.拉取镜像 #docker pull mysql:5.7 3.加载镜像并绑定端口: #docker ...

  8. python文件操作指令

    原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 常用的文件操作指令: python中对文件.文件夹(文件操 ...

  9. DOM操作指令整理

    DOM操作指令整理: (1) 创建新节点: createDocumentFragment() 创建一个DOM片段 creatElement() 创建一个具体的元素 creatTextNode() 创建 ...

随机推荐

  1. 硬件中断--DEBUG系列

    问题描述: 在线调试时,全速运行,程序进入硬件中断,查看堆栈窗口,发现是从A函数进去的.但是A函数应该没有问题的: 再次重复,发现是从B函数进去的,但是B函数之前运行起来也没有问题的,而且没有传入参数 ...

  2. P1198 [JSOI2008]最大数【树状数组】

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: L 不超过当前数列的长度. (L &g ...

  3. 20145202马超《java程序设计》第一周学习总结

    这两天的学习让我对java有了初步的了解. 1.java是SUN公司推出的面相网络的编程语言. 特点:完全面向对象,与平台无关,跨平台性(例如c++只能在windows上执行,然而java并没有这些限 ...

  4. PHP.28-TP框架商城应用实例-后台5-多表操作-商品表与品牌表

    表与表之间的关系:1:1 1:多 多:多 功能需求决定表关系 此处的表关系为:品牌表:商品表=1:多 1.首先在表结构上关联,在多的表(商品表)添加一个字段,关联一的表(品牌表)的ID(主键) 添加字 ...

  5. Spring.net Ioc 依赖注入

    控制反转 (Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注 ...

  6. springboot 采用HttpClient获取天气预报 异常及原因

    采用httpClient调用天气预报地址获取出现异常 2018-10-04 15:18:25.815 ERROR 10868 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[ ...

  7. 简洁好看的form样式收藏

    本文转载自 http://www.laozuo.org/3495.html 为了方便自己查阅所以搬运过来,如有侵权希望原作者联系我删除不要突然去法院告我呀! 颜色样式啥的都可以根据需求自己调整的,这些 ...

  8. react基本知识点合集

    妹子UI里面有React的相关组件与用法:http://amazeui.org/react/components React官方网站:https://facebook.github.io/react/ ...

  9. app分享功能开发

    最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件友推,结合自己的开发经验,把一些集成步骤和问题整理成文档奉献 ...

  10. 17、bootStrap组件

    1.bootStrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 2.字体图标 ①不要和其他图标混合使用 ②只能对内容为空的元素起作用 3.下拉菜单 <di ...