POP Article V2.0 设为主页
收藏本站
首 页交流论坛留 言
您现在的位置:首 页 >> 数据库编程 >> 编程技术 >> 查看文章
SQLite在TorqueScript中的使用(翻译)
作者:Skanda  来源:www.sqlite.com.cn  时间:2007-9-6  【 字体: 】 〖 双击滚屏 〗
1 創建一個文件,如db_sqlite.cs,加入下面的代碼:
引用
$dbname = "game/data/test.db";
// --- 定义一个全局变量$Sqlite,在以后的Sqlite DB的操作中,就主要使用它了。
$SqLite = new SqLiteObject(sqlite);
if ($SqLite == 0){
   echo("ERROR: Failed to create SqLiteObject. $SqLiteObject aborted.");
   return;
}

// open database
if ($SqLite.openDatabase($dbname) == 0){
   echo("ERROR: Failed to open database: " @ $dbname);
   echo("       Ensure that the disk is not full or write protected.  $SqLiteObject aborted.");
   return;
}
可以把db_sqlite.cs放在game/server/scripts/db/下。

2 SQLite DB的初始化
在game/server/scripts/db/下,创建initDB.cs,加入下面的函数。
這個方法,我是從Dreamer處學來的:
引用
function InitializeDB(){
   //This function only ever needs initialized once
   //Create Tables
   if($Pref::Server::RunOnce != 1){
      // --- Milestone 5 <Step 1>
      %query[0] = "CREATE TABLE Items (BaseType VARCHAR(30),ItemName VARCHAR(50),Category VARCHAR(20),ClassName VARCHAR(20),ShapeFile VARCHAR(255),mass VARCHAR(10),elasticity VARCHAR(10),friction VARCHAR(10),emap VARCHAR(5),pickUpName VARCHAR(50),Image VARCHAR(50),Icon VARCHAR(100),Dynamics VARCHAR(255))";
      // --- MileStone 5
      %query[1] = "CREATE TABLE Accounts (Name VARCHAR(20),password VARCHAR(20),Race VARCHAR(50),Level INT(11))";
      // --- Milestone 4
      %query[2] = "CREATE TABLE Skills (SkillName VARCHAR(15),MinLevel INT(5))";
      // --- Milestone 4
      %query[3] = "CREATE TABLE PlayerStats (Name VARCHAR(20), WIS INT(5),STR INT(5),STA INT(5),END INT(5),DEX INT(5),CHA INT(5),DNA VARCHAR(255))";
      %query[4] = "CREATE TABLE Inventory (Name VARCHAR(20),Item VARCHAR(20),Amount INT(11))";
       for(%x = 0; %x <= 4; %x++){
         echo(%query[%x]);
    %result = $SqLite.query(%query[%x],0);
    $SqLite.clearResult(%result);
      }
      InitItems();
      InitSkills();
      $Pref::Server::RunOnce = 1;
   }   
}

function InitItems(){
   %query[0] = "INSERT INTO Items VALUES ('ItemData','Sword','Weapon','Weapon','starter.rpg/data/shapes/weapons/swords/sword_12.dts','3','0.2','0.6','true','a sword','SwordImage','starter.rpg/data/Interface/Icons/INV_Sword_01','')";
   %query[1] = "INSERT INTO Items VALUES ('ItemData','HealthKit','Health','Health','starter.rpg/data/shapes/items/healthKit.dts','1','1','0.3','true','a health kit','','starter.rpg/data/Interface/Icons/INV_Drink_01','repairAmount 50')";
   %query[2] = "INSERT INTO Items VALUES ('ItemData','HealthPatch','Health','Health','starter.rpg/data/shapes/items/healthPatch.dts','1','1','0.3','true','a health patch','','starter.rpg/data/Interface/Icons/INV_Drink_01','repairAmount 20 maxInventory 0')";
   %query[3] = "INSERT INTO Items VALUES ('ItemData','Crossbow','Weapon','Weapon','starter.rpg/data/shapes/crossbow/weapon.dts','3','0.2','0.6','true','a crossbow','CrossbowImage','starter.rpg/data/Interface/Icons/INV_Weapon_Bow_01','')";
   for(%x = 0; %x <= 3; %x++){
      echo(%query[%x]);
      %result = $SqLite.query(%query[%x],0);
      $SqLite.clearResult(%result);
   }
}


注意函数InitializeDB(),只需在SQLite DB创建时执行一次即可。

3 在game/server/scripts/game.cs下,执行
引用
   exec("./db/InitDB.cs");
   exec("./db/db_sqlite.cs");
即可。

4 使用SQLite TorqueScript函数,进行数据库的操作。
浏览次数:   【 打 印 】【 关 闭
上一篇:PHP5中的 sqlite_create_function
下一篇:用Ruby进行SQLite的开发指导
 论坛登陆
用户名:
密  码:
验证码: 
Cookie 选项:
正常登陆 隐身登陆
   
没有注册?
 文章搜索
 推荐文章
 酷站推荐
 热门文章
 网站统计
关于我们 | 网站地图 | 联系我们 | 网站历史 | 友情链接 | TOP
Copyright© 2006 Sqlite中文社区  程序开发: mistletoe  站长: 林轩 陈文成