From: http://www.jb51.cc/article/p-zybvnkge-za.html
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口‘
在Cocos2d-X中使用SQLlite数据库
首先下载SQLlite数据库,SQLlite数据库的下载地址:http://download.csdn.net/detail/u010105970/8168569
下载完成后会得到一个压缩文件
解压后,文件夹中有3个文件sqlite3.c、sqlite3.h、sqlite3ext.h
创建一个Cocos2d-X工程,将这三个文件放在在工程目录下的Classes文件中
在程序中执行下面的代码创建SQLlite数据库
- //创建sqlite数据库
- sqlite3*pSqlite;
- //打开sqlite数据库
- intret=sqlite3_open("mydb",&pSqlite);
- //当sqllite数据库打开失败时
- if(ret!=SQLITE_OK)
- {
- //获得sqltite数据库打开错误的信息
- constchar*errmsg=sqlite3_errmsg(pSqlite);
- //打印数据库打开失败的信息
- CCLog("sqliteopenerror:%s",errmsg);
- returnfalse;
- }
//创建sqlite数据库 sqlite3* pSqlite; //打开sqlite数据库 int ret = sqlite3_open("mydb",&pSqlite); //当sqllite数据库打开失败时 if (ret != SQLITE_OK) { //获得sqltite数据库打开错误的信息 const char* errmsg = sqlite3_errmsg(pSqlite); //打印数据库打开失败的信息 CCLog("sqlite open error: %s",errmsg); return false; }
执行成功后会看到工程目录下的Resource文件夹中有一个mydb文件,mydb文件中保存的是SQLlite数据库信息
执行下面的代码实现创建表
- //创建表
- //第一个参数:打开的数据库
- //第二个参数:SQL语句
- ret=sqlite3_exec(pSqlite,"createtableTUSER(idinteger,nametext,passwordtext)",NULL,NULL);
- //如果创建表失败
- if(ret!=SQLITE_OK)
- {
- //得到创建表失败的信息
- constchar*errmsg=sqlite3_errmsg(pSqlite);
- //打印创建表失败的信息
- CCLog("sqliteexecerror:%s",errmsg);
- returnfalse;
- }
//创建表 //第一个参数:打开的数据库 //第二个参数:SQL语句 ret = sqlite3_exec(pSqlite,"create table TUSER (id integer,name text,password text)",NULL); //如果创建表失败 if (ret != SQLITE_OK) { //得到创建表失败的信息 const char* errmsg = sqlite3_errmsg(pSqlite); //打印创建表失败的信息 CCLog("sqlite exec error: %s",errmsg); return false; }
执行下面的代码向表中插入数据
- //向表中插入数据
- ret=sqlite3_exec(pSqlite,"insertintoTUSERvalues(1,'xueguoliang','password')",NULL);
- //当向表中插入数据失败时
- if(ret!=SQLITE_OK)
- {
- //得到向表中插入数据失败的信息
- constchar*errmsg=sqlite3_errmsg(pSqlite);
- //打印插入数据失败的信息
- CCLog("sqliteinserterror:%s",errmsg);
- returnfalse;
- }
//向表中插入数据 ret = sqlite3_exec(pSqlite,"insert into TUSER values(1,'password')",NULL); //当向表中插入数据失败时 if (ret != SQLITE_OK) { //得到向表中插入数据失败的信息 const char* errmsg = sqlite3_errmsg(pSqlite); //打印插入数据失败的信息 CCLog("sqlite insert error: %s",errmsg); return false; }
查询表中的数据
- //查询数据
- //查询用户名为xueguoliang的用户信息
- ret=sqlite3_exec(pSqlite,"select*fromTUSER",selectCallback,"xueguoliang",NULL);
//查询数据 //查询用户名为xueguoliang的用户信息 ret = sqlite3_exec(pSqlite,"select * from TUSER","xueguoliang",NULL);
查询数据的回调函数
- //查询数据的回调函数
- intselectCallback(void*key,intc,char**value,char**cols)
- {
- for(inti=0;i<c;i++)
- {
- CCLog("%s=%s",cols[i],value[i]);
- }
- CCLog("");
- if(strcmp(value[1],(char*)key)==0)
- {
- return-1;
- }
- return0;
- }
//查询数据的回调函数 int selectCallback(void* key,int c,char** value,char** cols) { for (int i = 0; i < c; i++) { CCLog("%s=%s",value[i]); } CCLog(""); if (strcmp(value[1],(char*)key) == 0) { return -1; } return 0; }
查询的数据
关闭SQLlite数据库
- //关闭数据库
- sqlite3_close(pSqlite);