Sqlite China  
首页 | 各种语言的sqlite编程 | sqlite研究 |sqlite应用实例与杂谈 | sqlite相关下载 | SQlite论坛
当前位置 : 主页>sqlite研究>列表
SQLite在TorqueScript中的使用(翻译)
来源:工友 作者:工友 时间:2007-12-21
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函数,进行数据库的操作。
(阅读次数:
上一篇:关于sqlite_exec回调函数中参数传递的问题 下一篇:用Ruby进行SQLite的开发指导
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
§最新评论
热点文章
·SQLite数据库的体系结构
·SQLite与其他数据库的速度
·SQL 语言参考资料
·SQLite语法备忘录
·sqlite 的相关调查1
·嵌入式数据库SQLite的一份
·SQLite在嵌入式Web服务器
·点评主流开源数据库的技术
·基于ARM-Linux的SQLite嵌
·SQLite与其他数据库的速度
·SQLite数据库编程--创建数
·SQL 语法手册
·SQLite Mode 数据库交互的
·SQLITE3 使用总结(3)
·XXTEA加密算法为SQLite 3.
·SQLite 第三版总览(简介)
·SQLite 第三版中的数据类
·用sqlite 执行标准 sql 语
·System.Data.Sqlite 上手
·SQLite编译安装步骤
相关文章
·SQLite Mode 数据库交互的
·SQL 语言参考资料
·SQLite在嵌入式Web服务器
·SQL 语法手册
·System.Data.Sqlite 上手
·SQLite数据库编程--创建数
·SQLite数据库编程--数据库
·SQLite在TorqueScript中的
·关于sqlite_exec回调函数
·用sqlite 执行标准 sql 语

版权Power by DedeCms   后台登陆
Copyright @ 2007