自己整理的一些简单数据库导入cocos2dx的操作

本文介绍了如何在Cocos2dx项目中集成SQLite数据库,包括VS2012环境配置,数据库连接,复制数据库文件,以及数据库的打开、增加、查询、更新和删除等基本操作。

一:数据库连入cocos2dx中(vs2012环境配置):

1.工程属性。。C/c++ 附加包含目录:$(EngineRoot)external\sqlite3\include

2.工程->单机右键。。添加现有项。。Cocos2d。。External(所有的第三方工具都在这)。。Sqlite3。。Libraries。。Win32。。Sqlite3.lib。。

3.将上面目录下的sqlite.dll拷贝到debugwin32目录下。

4.引入头文件 #includesqlite3.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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值