Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Cocos2d-X之游戏存储Sqlite基础篇(四)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

正在做的项目需要sqlite数据库存储数据。小巧 、高效和易操作是sqlite的明显特点,无平台更是强大。开源且免费啊,亲。

好的,下面步入正题。看下xcode下的Cocos2d—X的数据存储如何使用。

看下sqlite表的数据返回,会带有字段的一行:

As an example of the result table format,suppose a query result is as follows:

Name        | Age
-----------------------
Alice       | 43
Bob         | 28
Cindy       | 21

There are two column (M==2) and three rows (N==3). Thus the result table has 8 entries. Suppose the result table is stored in an array names azResult. Then azResult holds this content:

azresult[0] = "Name";
azresult[1] = "Age";
azresult[2] = "Alice";
azresult[3] = "43";
azresult[4] = "Bob";
azresult[5] = "28";
azresult[6] = "Cindy";
azresult[7] = "21";


HelloWorld的初始化直接写了。废话不说,直接代码贴出:


access函数判断文件存在与否,mode为0.

  1. Stringpath=CCFileUtils::sharedFileUtils()->getWritablePath()+"mysqlite.db";
  2. remove(path.c_str());
  3. intflag=access(path.c_str(),0);
  4. if(flag!=0){
  5. userData.init();
  6. }



copy
    #include<sqlite3.h>

copy
    voidHelloWorld::init()
  1. {
  2. //1.创建数据库testsqlite3
  3. sqlite3*testsqlite3=NULL;
  4. //sqlite3_open()方法会打开数据库,没有就自动创建一个
  5. intresultOK=sqlite3_open("/Users/kevin/Desktop/testsqlite9.db",&testsqlite3);
  6. //返回数字0,说明创建成功
  7. if(resultOK!=@R_425_5607@OK){
  8. sqlite3_close(testsqlite3);
  9. return;
  10. }
  11. CCLOG("resultOK%d",resultOK);
  12. //2.使用sql语句创建表testTable,并设置字段
  13. constchar*createTableSQL="createtabletestTable(int_colINTERGER,float_colREAL,String_colTEXT,name_colTEXT)";
  14. //stmt,即是statement句柄,承载着sql语
  15. sqlite3_stmt*stmt=NULL;
  16. //sql语句的长度
  17. intlength=strlen(createTableSQL);
  18. CCLOG("length%d",length);
  19. //sqlite3_prepare_v2,准备创建数据表,参数分别是数据库名称,表名称,语句长度,句柄。如果写入错误,则释放stmt对象,关闭数据库
  20. if(sqlite3_prepare_v2(testsqlite3,createTableSQL,length,&stmt,NULL)!=@R_425_5607@OK){
  21. if(stmt){
  22. sqlite3_finalize(stmt);
  23. sqlite3_close(testsqlite3);
  24. return;
  25. }
  26. CCLOG("%d:准备执行语句成功",sqlite3_prepare_v2(testsqlite3,NULL));
  27. //sqlite3_step执行创建语句,如果创建错误,则释放stmt对象,关闭数据库
  28. if(sqlite3_step(stmt)!=@R_425_5607@DONE){
  29. //CCLOG("sqlite3_step(stmt)%d",sqlite3_step(stmt));
  30. //释放创建表语句的对象内存
  31. CCLOG("createthetable@R_944_6048@sed!");
  32. //3.insert表数据
  33. char*insertDatabase="inserTintotestTablevalues(100,100,'这是一个测试','我的名字叫kevin')";
  34. sqlite3_stmt*stmt4;
  35. if(stmt4){
  36. sqlite3_finalize(stmt4);
  37. intres1=sqlite3_step(stmt4);
  38. if(res1!=@R_425_5607@DONE){
  39. sqlite3_finalize(stmt4);
  40. CCLOG("插入数据成功");
  41. //成功后清除句柄对象
  42. //4.使用sql查询语句
  43. char*SELEctSQL="SELEct*fromtestTable";
  44. sqlite3_stmt*stmt2=NULL;
  45. intlength2=strlen(SELEctSQL);
  46. CCLOG("length2%d",length2);
  47. if(stmt2){
  48. sqlite3_finalize(stmt2);
  49. intres=sqlite3_step(stmt2);
  50. CCLOG("res%d",res);
  51. intfieldCount=sqlite3_column_count(stmt2);
  52. CCLOG("sqlite3_column_count(stmt2)fieldCount:%d",fieldCount);
  53. if(res==@R_425_5607@ROW){
  54. for(intcount=0;count<fieldCount;count++){
  55. intstype=sqlite3_column_type(stmt2,count);
  56. if(stype==@R_425_5607@IntegeR){
  57. inttemp1=sqlite3_column_int(stmt2,248)"> CCLOG("temp1%d",temp1);
  58. if(stype==@R_425_5607@FLOAT){
  59. doubletemp2=sqlite3_column_double(stmt2,248)"> CCLOG("temp2%.2f",temp2);
  60. if(stype==@R_425_5607@TEXT){
  61. char*temp3=(char*)sqlite3_column_text(stmt2,248)"> CCLOG("temp3%s",temp3);
  62. if(stype==@R_425_5607@NULL){
  63. CCLOG("NULL");
  64. }elseif(res==@R_425_5607@DONE)
  65. {
  66. CCLOG("查询已经完成");
  67. //5.使用droptable模块
  68. char*deleteDatabase="droptabletestTable";
  69. sqlite3_stmt*stmt3;
  70. :rgb(108,deleteDatabase,strlen(deleteDatabasE),&stmt3,NULL)!=@R_425_5607@OK){
  71. if(stmt3){
  72. sqlite3_finalize(stmt3);
  73. if(sqlite3_step(stmt3)==@R_425_5607@DONE){
  74. CCLOG("dropthetablesucceed");
  75. CCLOG("sqlite3_step(stmt3)%d",sqlite3_step(stmt3));
  76. CCLOG("Hellosqlite!");
  77. }


看下输出结果:


copy
    Cocos2d:resultOK0
  1. Cocos2d:length88
  2. Cocos2d:0:准备执行语句成功
  3. Cocos2d:createthedatabase@R_944_6048@sed!
  4. Cocos2d:插入数据成功
  5. Cocos2d:length224
  6. Cocos2d:res100
  7. Cocos2d:sqlite3_column_count(stmt2)fieldCount:4
  8. Cocos2d:temp1100
  9. Cocos2d:temp2100.00
  10. Cocos2d:temp3这是一个测试
  11. Cocos2d:temp3我的名字叫kevin
  12. Cocos2d:dropthetablesucceed
  13. Cocos2d:sqlite3_step(stmt3)21
  14. Cocos2d:Hellosqlite!


原文地址:http://www.voidcn.com/article/p-vsqehcsj-be.html

大佬总结

以上是大佬教程为你收集整理的Cocos2d-X之游戏存储Sqlite基础篇(四)全部内容,希望文章能够帮你解决Cocos2d-X之游戏存储Sqlite基础篇(四)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:cocoscocos2ddsqlitex基础存储游戏
猜你在找的Cocos2d-x相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap