自己整理的一些简单数据库导入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);
}
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);
}
相关文章推荐
- (分享)自己整理的一些简单awk实用语句
- oracle图形用户接口软件si object browser导入数据库的一些操作
- Yii2.0基础: 对数据库 查询的一些简单的操作
- 下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作
- 最新MDB数据库操作大全(自己搜集整理基本上很全了)
- 自己整理的Oracle数据库操作常用备份导入导出实用命令
- Yii2.0 对数据库 查询的一些简单的操作(转载)
- yii2.0对数据库查询的一些简单操作
- Yii2.0 对数据库 查询的一些简单的操作
- Yii2.0 对数据库 查询的一些简单的操作
- 自己整理的Oracle数据库操作常用备份导入导出实用命令
- 数据库的一些简单操作
- EXCEL导入导出自己整理的一些方法
- 你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的
- PHP 数据库一些简单操作
- 关于数据库操作整理的一些经验
- 对数据库的一些简单操作
- 一个简单的数据库操作类、封装了一些简单的操作
- Yii2.0 对数据库 查询的一些简单的操作
- Yii2.0数据库查询的一些简单的操作