C++封装SQLite实例<六>
之前的连续五篇大致介绍了各种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;");
以上操作是针对非查询类的语句,虽然会返回受影响的行数,但一般没用到。
获取一整个表的内容,并具有针对性的获取数据。
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*对象,然后再执行查询。