您的位置:首页 > 移动开发 > Cocos引擎

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

2014-09-18 09:33 363 查看
一:数据库连入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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐