玩传奇论坛

标题: 91M2引擎如何操作数据库 77M2引擎数据库修改难吗? [打印本页]

作者: admin    时间: 2019-5-12 20:28
标题: 91M2引擎如何操作数据库 77M2引擎数据库修改难吗?
如何操作数据库
unit Q7;

interface
  uses Classes, SysUtils, DB{使用TDataSet对象必须引用此单元};

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);

implementation

{
拼接SQL注意,以MSSQL为例,假设SQL语句为: SELECT * FROM Table WHERE Name='xxx'
则在Pascal中字符表示为: S := 'SELECT * FROM Table WHERE Name=''xxx''';  
                       S := 'SELECT * FROM Table WHERE Name=''' + Player.Name + '''';
                       两个单引号来表示SQL中的一个单引号
}

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
  ADataSet: TDataSet;
  AList: TStrings;
begin
  //普通执行语句不需要返回
  Gamelib.DBEngine.ExecSQL('HumDB', 'UPDATE Players SET nGold=0 WHERE nGold < 0');     
  Gamelib.DBEngine.ExecSQL('HumDB', 'UPDATE Players SET nGold=10000 WHERE sChrName=''' + Player.Name+ ''''); //这里需要注意引号的使用
  //查询数据并将结果放到数据集,然后从数据集读取数据
  ADataSet := Gamelib.DBEngine.Query('HumDB', 'SELECT * FROM Players');
  if ADataSet <> nil then //必须做此判断,因为当数据连接找不到的时候返回为nil值
  begin
    AList := TStringList.Create;
    try      
      ADataSet.Open; //打开数据集  
      if not ADataSet.IsEmpty then //如果数据集不为空的情况下
      begin
        while not ADataSet.Eof do //如果没到数据集的末尾
        begin
          //S := ADataSet.FieldByName('sChrName').AsString; //直接将字段赋值到变量S中         
          AList.Add(ADataSet.FieldByName('sChrName').AsString);  //将字段sChrName的值取出来放到AList中
          ADataSet.Next; //数据集向后滚动,如果循环读取数据,此处必须,否则会死循环
        end;   
      end;
      Npc.MessageBox(Player, AList.Text);
    finally
      ADataSet.Free;  //数据集需要自己手工释放
      AList.Free; //自己创建的TStrings类对象需要释放
    end;
  end;  
  //直接将一个查询结果中的第一个字段的值填入到一个TStrings
  AList := Gamelib.DBEngine.ValueList('HumDB', 'SELECT sChrName FROM Players');  //ValueList函数一定会返回一个TStrings实例,并且需要自己释放
  Npc.MessageBox(Player, AList.Text);
  AList.Free;
end;

end.

注意:操作SQLite数据库的时候需要注意对应的数据库文件是否被其他应用打开,如果被其他应用打开则只是只读状态,增删改等操作是无效的。比如正在被使用中的示范版本的角色数据库和账号数据库
作者: 血落无痕    时间: 2019-5-13 07:03
又抢到前排了。哈,不用怀疑,不用惊讶,你也没有看错!
作者: 炽火猪头    时间: 2019-5-30 07:50
这个帖一般般,还可以哦!
作者: 风月雪舞    时间: 2019-5-30 09:24
这个帖一般般,还可以哦!
作者: 水恋云纱    时间: 2019-6-6 07:02
顶顶顶顶顶大大大
作者: 蔚蓝夜舞    时间: 2019-6-15 09:19
不错,顶一个!
作者: 零式的罪    时间: 2019-6-21 08:46
呵呵,低调,低调!
作者: 敬仰    时间: 2019-6-26 08:14
路过 帮顶 嘿嘿
作者: 波斯王子    时间: 2019-7-5 07:18
不错,顶一个!
作者: 众神迷失    时间: 2019-7-7 08:56
66666668
作者: 极品小兔子    时间: 2019-7-16 08:18
呵呵,低调,低调!
作者: 蔚蓝芊芊    时间: 2019-7-20 08:19
呵呵。。。不错啊
作者: 云卷云舒    时间: 2019-7-30 09:57
这个帖一般般,还可以哦!
作者: 月微眠    时间: 2019-8-12 09:06
顶顶顶顶顶大大大
作者: 荣耀落樱    时间: 2019-8-21 07:20
呵呵,低调,低调!
作者: 峰少    时间: 2019-8-29 08:41
发发呆,回回帖,工作结束~
作者: 风华    时间: 2019-9-9 08:27
又抢到前排了。哈,不用怀疑,不用惊讶,你也没有看错!
作者: 小珺    时间: 2019-9-20 07:26
感谢楼主分享,2019发大财!!!
作者: 众神茶茶文    时间: 2019-9-28 07:49
感谢楼主分享,2019发大财!!!
作者: 炽火猫猫羊悲哀    时间: 2019-10-6 07:21
发发呆,回回帖,工作结束~
作者: 颠覆信仰    时间: 2019-10-12 07:37
66666668
作者: 季节    时间: 2019-10-19 07:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乳此动人    时间: 2019-11-12 08:06
呵呵。。。不错啊
作者: 众神玖掵貓    时间: 2019-11-23 08:46
呵呵,低调,低调!
作者: 荣誉永恒回忆    时间: 2019-12-6 07:24
感谢楼主分享,2019发大财!!!
作者: 霸气纵横    时间: 2019-12-17 07:42
这个帖一般般,还可以哦!
作者: 令狐芒果    时间: 2019-12-30 07:31
不错,顶一个!
作者: 炫舞V留念    时间: 2020-1-8 07:23
呵呵。。。不错啊
作者: 晋宁    时间: 2020-1-24 08:20
呵呵,低调,低调!
作者: 凯旋香香百合    时间: 2020-2-9 08:01
66666668
作者: 用户名重复    时间: 2020-2-19 08:36
每一个支持传奇论坛新贴,消灭0回复
作者: 炽火骄阳    时间: 2020-2-23 08:34
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
作者: 天籁小仔    时间: 2020-2-23 08:34
发发呆,回回帖,工作结束~
作者: 蛤蟆青蛙    时间: 2020-3-1 07:06
这个帖一般般,还可以哦!
作者: 阿斯菲尔    时间: 2020-3-11 07:06
路过 帮顶 嘿嘿
作者: 闲闲闲    时间: 2020-3-20 08:21
么有分,谁能送我点积分啊::>_<::
作者: 赤魂雨夜    时间: 2020-3-27 08:31
这个帖一般般,还可以哦!
作者: 阿鲁卡多    时间: 2020-4-4 08:14
发发呆,回回帖,工作结束~
作者: 纵横群山    时间: 2020-4-12 07:01
不错,顶一个!
作者: 炽火凌之寒    时间: 2020-4-17 08:11
回的人少,我来小顶一下!
作者: 追梦丨血薇    时间: 2020-4-22 07:07
发发呆,回回帖,工作结束~
作者: 裴涩琪    时间: 2020-4-26 08:04
每一个支持传奇论坛新贴,消灭0回复
作者: 心语    时间: 2020-5-6 08:50
又抢到前排了。哈,不用怀疑,不用惊讶,你也没有看错!
作者: 歪小鼠    时间: 2020-5-9 08:25
顶顶顶顶顶大大大




欢迎光临 玩传奇论坛 (http://wanmirbbs.com/) Powered by Discuz! X3.2