一:数据库连入cocos2dx中(vs2012环境配置):
1.工程属性。。C/c++ 附加包含目录:$(EngineRoot)external\sqlite3\include
2.工程->单机右键。。添加现有项。。Cocos2d。。External(所有的第三方工具都在这)。。Sqlite3。。Libraries。。Win32。。Sqlite3.lib。。
3.将上面目录下的sqlite.dll拷贝到debugwin32目录下。
4.引入头文件 #include“sqlite3.h”
二:数据库中表文件的复制
定义全局函数int fileCopy(const char * srcfileName,const char * desfileName);
//函数的实现
int fileCopy(const char * srcfileName,const char * desfileName){
//判断文件是否已存在,如果存在则直接返回
if (FileUtils::getInstance()->isFileExist( desFileName))
//真机测试要先用此语句进行判断
{
return 0;
}
//获得srcFileName 文件中的内容
Data data = FileUtils::getInstance()->getDataFromFile(srcFileName);
//打开desFileName wb已二进制的方式进行写入
FILE * fp = fopen(desFileName,"wb");
//正式写入文件内容,参数:date.getBytes()返回数据块data的指针,date.getSize()数据块中的元素个数,
// 1表示写date.getSize()*1的量的数据
fwrite(data.getBytes(),1,data.getSize(),fp);
//表示完成上面的写文件
fflush(fp);
//关闭文件
fclose(fp);
return 1;
}
三:数据库中表的打开、增加、查询、更新、删除
sqlite3 * pdb;
1-----------------------------------------------------------------------------------
void opendb(){
std::string fileName = FileUntils::getInstance->getwritablePath() + “B.sqlite3”;
pdb = nullptr;
//如果打开的文件不存在直接返回
If(sqlite3_open(fileName.c_str(),&pdb) != SQLITE_OK){
Return ;
}}
2-----------------------------------------------------------------------
void querydb(){
sqlite3_stmt * stmt = nullptr;
//准备打开
//是否执行成功 字符串语句的长度(自动检测)、游标、回调函数
if(sqlite3_prepare(pdb,"select * from EnemyTank where ID = ? and name = ?",-1,&stmt,NULL)!=SQLITE_OK){
return;
}
//绑定问号 :游标、第几个问号、给定的值
sqlite3_bind_int(stmt,1,2);
//(一般只要带着char *的都要给一个空的回调函数
sqlite3_bind_text(stmt,2,"haha",-1,nullptr);
//按步查询
while (sqlite3_step(stmt) == SQLITE_ROW)
{
int id = sqlite3_column_int(stmt,0);
const unsigned char * name = sqlite3_column_text(stmt,1);
const unsigned char * texture = sqlite3_column_text(stmt,4);
std::string fileName = StringUtils::format("%s",texture);
auto sp = Sprite::create(fileName);
float x = (float)sqlite3_column_double(stmt,2);
log("%.2f",x);
log("ID:%d,NAME:%s",id,name);
}
log("pdb = %p",pdb);
}
3------------------------------------------------------------------
Void insertpb(){void Sqlite::insertdb(){
//写插入语句
char * sql = "insert into EnemyTank (NAME,X,Y,TEXTURE) values(?,?,?,?)";
sqlite3_stmt * stmt = nullptr;
sqlite3_prepare(pdb,sql,-1,&stmt,nullptr);
sqlite3_bind_text(stmt,1,"lanou",-1,nullptr);
sqlite3_bind_int(stmt,2,100);
sqlite3_bind_int(stmt,3,100);
sqlite3_bind_text(stmt,4,"enemy3U.png",-1,nullptr);
sqlite3_step(stmt);
log("%d",sqlite3_step(stmt));
}
4----------------------------------------------------------------
void Sqlite::updatedb(){
char * sql = "update EnemyTank set NAME = 'haha' where NAME = 'big'";
sqlite3_exec(pdb,sql,nullptr,nullptr,nullptr);
}
5-------------------------------------------------------------
void Sqlite::deletedb(){
char *sql = "delete from EnemyTank where NAME = 'speed'";
sqlite3_exec(pdb,sql,nullptr,nullptr,nullptr);
}
本文介绍了如何在Cocos2dx项目中集成SQLite数据库,包括VS2012环境配置,数据库连接,复制数据库文件,以及数据库的打开、增加、查询、更新和删除等基本操作。
964

被折叠的 条评论
为什么被折叠?



