91M2引擎如何操作数据库 77M2引擎数据库修改难吗?

1M2引擎如何操作数据库

20190512183934.png (954.98 KB, 下载次数: 0)

下载附件

2019-5-12 18:50 上传

如何操作数据库

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数据库的时候需要注意对应的数据库文件是否被其他应用打开,如果被其他应用打开则只是只读状态,增删改等操作是无效的。比如正在被使用中的示范版本的角色数据库和账号数据库

文章归发布者所有。发布者:爱到深处,转载请注明出处:https://www.anyitu.com

如该内容侵犯您的权利,请及时联系我们

微信公众号