/* /////////////////////////////////简介///////////////////////////////// sqlite是一种嵌入式数据库,它跟微软的Access差不多,只是一个.db格式的文件。但是与Access不同的是,它不需要安装任何软件,非常轻巧。很多软件都有用到这个家伙,包括腾讯QQ、迅雷(你在迅雷的安装目录里可以看到有一个sqlite3.dll的文件,就是它了),以及现在大名鼎鼎的android等。sqlite3是它的第三个主要版本。就是sqlite3.0的意思。 对了,金山词霸也有用到sqlite,其实太多软件用那玩意儿了。 sqlite是一个开源的嵌入式关系数据库,在2000年由D.Richard Hipp发布。sqlite能够减少应用程序管理数据库的开销,可逢移植性好,高效而且可靠。sqlite嵌入到应用程序中,与应用程序共用相同的进程空间,而不是单独的一个进程。从外部看,sqlite并不像一个关系数据库,但在进程内部,却是完整的、自包含的数据库引擎。 */
/* 核心对象: 数据库连接对象: sqlite3 prepared_statement对象: sqlite3_stmt 严格的讲sqlite3_stmt对象也不是必须的,另外两个封装了sqlite3_stmt的接口sqlite3_exec和sqlite3_get_table可以代替sqlite3_stmt对象完成数据存取工作,但是理解sqlite3_stmt对于充分使用sqlite有很大帮助以下是一些操作sqlite3和sqlite3_stmt对象的接口,下面这些名字只是提供一个概念,实际的函数可能会有很多版本比如sqlite3_open()有,sqlite3_open_v16(),sqlite3_open_v2() */
/* 关键函数: */ sqlite3_open() //打开数据库 sqlite3_prepare() //将sql语句转换成sqlite3_stmt对象,增加版sqlite3_prepare_v2() sqlite3_step() //单步执行sqlite3_stmt sqlite3_column() //返回sqlite3_stmt所在行的指定column的值 sqlite3_finalize() //销毁sqlite3_stmt对象,释放内存 sqlite3_close() //关闭数据库 /* 只要会用以上六个函数的使用也就差不多已经进入了sqlite3的C/C++编程了 */
#include <iostream> #include <string.h> #include "sqlite3.h" #pragma comment(lib,".\\sqlite3.lib") using namespace std; /* 编译环境:VC6.0 */ //创建"表"函数 void Create(int &rc,sqlite3 *db,char *sql,sqlite3_stmt *stmt) { //判断是否已经存在表了 rc=sqlite3_prepare_v2(db,sql,strlen(sql),&stmt,0); if (rc) { fprintf(stderr,"对象转换失败:%s\n",sqlite3_errmsg(db)); return; } //执行stmt(执行sql语句) sqlite3_step(stmt); //释放stmt资源 sqlite3_finalize(stmt); } void Insert(int &rc,sqlite3_stmt *stmt,char name[]) { sprintf(sql,"INSERT INTO MyTable VALUES(NULL,'%s');",name); rc=sqlite3_prepare_v2(db,sqlite3_errmsg(db)); return; } sqlite3_step(stmt); sqlite3_finalize(stmt); } int main() { //sqlite3两个重要对象 sqlite3 *db; sqlite3_stmt *stmt=0; //创建表的结构 char sql[]= "CREATE TABLE IF NOT EXISTS MyTable(ID integer NOT NULL primary " "key autoincrement,Name nvarchar(32));"; //[1]打开数据库 int rc=sqlite3_open("MyDB.db",&db); if (rc) { sqlite3_close(db); return -1; } else Create(rc,db,stmt); //向数据里边插入些数据,用来测试 Insert(rc,stmt,"张三"); Insert(rc,"李四"); Insert(rc,"王五"); Insert(rc,"赵六"); sprintf(sql,"SELECT * FROM MyTable;"); //[2]将sql语句转换成stmt对象 sqlite3_prepare_v2(db,0); int id; unsigned char *name; //[3]循环执行stmt对象,读取数据库里边的数据 while(sqlite3_step(stmt)==sqlITE_ROW) { //[4]绑定变量 id=sqlite3_column_int(stmt,0); name=(unsigned char *)sqlite3_column_text(stmt,1); cout<<id<<'\t'<<name<<endl; } //[5]释放资源 sqlite3_finalize(stmt); //[6]关闭数据库 sqlite3_close(db); return 0; }
原文地址:https://www.jb51.cc/sqlite/202348.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。