C++封装SQLite实例<六>
来源:互联网 发布:win7不能网络共享 编辑:程序博客网 时间:2024/05/16 02:01
之前的连续五篇大致介绍了各种SQLite的原生函数原型,参数以及用途等,并对各个封装的类做了详细的介绍,最后一篇将展示一下怎么使用封装,使用封装的时候需要注意的问题等。
假设已经存在一个数据库名为FirSQLite.db;下面使用各种类来对其做各种常规访问与操作。
最开始要定义一个CppSQLite3DB类对象 db;然后调用函数Open(const char *)打开一个已经存在的数据库,如果不存在就创建一个新的数据库。
非查询类的sql语句调用举例
1:根据一条sql语句创建一个表。db.ExecDML("create table teacher (t_id int, t_age int, t_sex char);");
2:插入一条记录。db.ExecDML("insert into teacher values(124, 30, 'M');");
3:更新一条记录。db.ExecDML("update teacher set t_age = 11 where t_id = '123';");
4:删除表,用的是drop,删除整个物理存储表。db.ExecDML("drop table teacher;");
以上操作是针对非查询类的语句,虽然会返回受影响的行数,但一般没用到。
获取一整个表的内容,并具有针对性的获取数据。
CppSQLite3Table ct = db.GetTable("select * from teacher order by 1");int id, age;char *sex, *name;for (int row = 0; row < ct.NumOfRows(); row++){ct.SetRow(row); //每次获取数据前要显式的指定行值ct.GetIntField(0, id);ct.GetIntField(1, age); //然后根据列索引(从0开始)以及数据类型获取ct.GetStringField(2, sex); //这里使用的是向函数中传递一个引用ct.GetStringField(3, name);cout<<id<<" "<<age<<" "<<sex<<" "<<name<<endl;}
根据查询语句获取一个满足条件的结果并管理。
CppSQLite3Query cq = db.ExecQuery("select * from teacher where t_sex = 'M';");int id, age;char *sex, *name;while (!cq.Eof()){cq.GetIntValue(0,id);cq.GetIntValue(1, age);cq.GetStringValue(2, sex);cq.GetStringValue(3, name);cout<<id<<" "<<age<<" "<<sex<<" "<<name<<endl;cq.NextRow(); //每一次要调用一次函数,将转到下一条查询记录开始出}cq.Finalize(); //查询语句结束后,要显式的调用这个函数,终结这个特定的sqlite3_stmt*对象。
最后总结一下使用原生函数执行的流程所使用的函数都被封装在了哪里。
sqlite3_open(const char *)在CppSQlite3DB::Open(const char *)函数中。
如果要执行CppSQLite3DB::ExecDML(const char *)函数,则内部会直接调用一个sqlite3_exec()函数直接作用在数据库对象上,并返回受影响的行数。
如果要执行的CppSQLite3DB::ExecQuery(const char *)函数,内部先对一个const char *的sql语句通过CppSQLite3DB::Compile(const char *)生成一个sqlite3_stmt*对象,然后再执行查询。
- C++封装SQLite实例<六>
- c++封装SQlite实例
- C++封装SQLite实例<一>
- C++封装SQLite实例<二>
- C++封装SQLite实例<三>
- C++封装SQLite实例<四>
- C++封装SQLite实例<五>
- Android 深入研究SQLite实例(六)
- C++Windows下SQLite简单封装
- C语言经典实例六
- SQLite 封装
- sqlite封装
- 【Android学习日记】(六) SQLite的简单实例
- Android数据存储(六)、SQLite数据库使用实例
- Objective-C SQLite数据库封装FMDB的介绍
- FMDatabase——SQLite的Objective-C封装
- Objective-C SQLite数据库封装FMDB的介绍
- Objective-C SQLite数据库封装FMDB的介绍
- 程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序
- linux下二进制文件比较程序
- 用javap查看编译版本
- 程序员编程艺术:第八章、从头至尾漫谈虚函数
- java socket多线程聊天室
- C++封装SQLite实例<六>
- 2013-3-28 唯品会笔试题
- RMAN 增量备份 的 对象测试
- sharepoint 日历以及相关知识
- 经典算法研究系列:六、教你初步了解KMP算法、updated
- PostgreSQL
- C++琐碎知识(不断更新)
- 2013年3月24日 周赛 解题报告 -- from lanshui_Yang
- 在VC中使用Debug