下载附件,解压,添加到工程中,加入头文件
include "sqlite/sqlite3.h"
创建数据库的代码 返回sqlite3的一个指针,通过该指针可以添加、修改、删除数据
sqlite3 * dbutils::creattable()
{
sqlite3 *pDB = NulL;//数据库指针
char * errMsg = NulL;//错误信息
std::String sqlstr;//sql指令
int result;//sqlite3_exec返回值
//打开一个数据库,如果该数据库不存在,则创建一个数据库文件
result = sqlite3_open("save.db",&pDB);
if( result != @R_389_5607@OK )
// cclog( "打开数据库失败,错误码:%d ,错误原因:%s\n",errMsg );
cout<<errMsg<<endl;
//创建表,设置ID为主键,且自动增加
result=sqlite3_exec( pDB,"create table Info( ID INTEGER PRIMary key autoincrement,aWARD nvarchar(50)) ",&errMsg );
return pDB;
// sqlite3_close(pDB);
}
通过创建数据库返回的指针,保存数据
- int dbutils::save(sqlite3 *pDB)
- {
- char * errMsg=NulL;
- std::String sqlstr=" insert into Info(name,score,aWARD) values ( '1','1','1' ) ";
- int result = sqlite3_exec( pDB,sqlstr.c_str(),&errMsg );
- return result;
- }
[cpp]
view plain
copy
print
?
- int dbutils::save(sqlite3 *pDB)
- {
- char * errMsg=NulL;
- std::String sqlstr=" insert into Info(name,'1' ) ";
- int result = sqlite3_exec( pDB,&errMsg );
- return result;
- }
int dbutils::save(sqlite3 *pDB)
{
char * errMsg=NulL;
std::String sqlstr=" insert into Info(name,'1' ) ";
int result = sqlite3_exec( pDB,&errMsg );
return result;
}
查询数据
定义一个全局函数,也就是在类外定义
[cpp]
view plain
copy
print
?
- int loadRecord( voID * para,int n_column,char ** column_value,char ** column_name )
- {
-
-
- InfoBean * info=new InfoBean(column_value[0],column_value[3]);
-
-
-
-
- dbutils::List->addobject(info);
-
- info->autorelease();
- return 0;
- }
int loadRecord( void * para,int n_column,char ** column_value,char ** column_name )
{
InfoBean * info=new InfoBean(column_value[0],column_value[3]);
/*info->setID(column_value[0]);
info->setname(column_value[1]);
info->setscore(column_value[2]);
info->setAWARD(column_value[3]);*/
dbutils::List->addobject(info);
info->autorelease();
return 0;
}
定义一个类的静态成员函数
- voID dbutils::ListAll(sqlite3 *pDB)
- {
- dbutils::List=new CCSet();
- List->autorelease();
- char * errMsg=NulL;
- std::String sqlstr="SELEct * from Info order by score desc limit 0,10";
- int result = sqlite3_exec( pDB,loadRecord,&errMsg );
-
-
- }
[cpp]
view plain
copy
print
?
- voID dbutils::ListAll(sqlite3 *pDB)
- {
- dbutils::List=new CCSet();
- List->autorelease();
- char * errMsg=NulL;
- std::String sqlstr="SELEct * from Info order by score desc limit 0,10";
- int result = sqlite3_exec( pDB,&errMsg );
-
-
- }
voID dbutils::ListAll(sqlite3 *pDB)
{
dbutils::List=new CCSet();
List->autorelease();
char * errMsg=NulL;
std::String sqlstr="SELEct * from Info order by score desc limit 0,10";
int result = sqlite3_exec( pDB,&errMsg );
}
当调用ListAll的时候,执行到sqlite3_exec的时候,会回调loadRecord函数,一条数据调用一次
遍历CCSet
- CCSetIterator it;
- InfoBean *bean;
- CCSet * List=ListAllRecord();
- cclOG("%s","Hello");
- int position[]={300,606,300,530,454,378,302,760,302};
- int i=0;
- for(it=List->begin();it!=List->end();it++)
- {
- bean=(InfoBean *)(*it);
- if(!bean)
- break;
- cclOG("%s",bean->getname());
- cclabelTTF *m_pLabelname = cclabelTTF::labelWithString(bean->getname(),"Arial",30);
- m_pLabelname->setcolor(ccc3(255,0));
- int temp_one=2*i;
- int temp_two=(i+1)*2-1;
- m_pLabelname->setposition(CCPointMake(position[temp_one],position[temp_two]));
- this->addChild(m_pLabelName);
- cclabelTTF *m_pLabelscore = cclabelTTF::labelWithString(bean->getscore(),30);
- m_pLabelscore->setcolor(ccc3(255,0));
-
- m_pLabelscore->setposition(CCPointMake(position[temp_one]+150,position[temp_two]));
- this->addChild(m_pLabelscore);
-
-
- i++;
- }