如何操作数据库
export function Main(Npc: TNormNpc, Player: TPlayObject, Args: TArgs): void { let ADataSet: TDataSet; let AList: TStringList; //普通执行语句不需要返回 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 != null) { //必须做此判断,因为当数据连接找不到的时候返回为null值 AList = GameLib.CreateStringList() try { ADataSet.Open(); //打开数据集 if (!ADataSet.IsEmpty()) { //如果数据集不为空的情况下 while (!ADataSet.Eof()) { //如果没到数据集的末尾 //S := ADataSet.FieldByName('sChrName').AsString; //直接将字段赋值到变量S中 AList.Add(ADataSet.FieldByName('sChrName').AsString); //将字段sChrName的值取出来放到AList中 ADataSet.Next(); //数据集向后滚动,如果循环读取数据,此处必须,否则会死循环 } } Npc.MessageBox(Player, AList.Text); } finally {
} } //直接将一个查询结果中的第一个字段的值填入到一个TStrings AList = GameLib.DBEngine.ValueList('HumDB', 'SELECT sChrName FROM Players'); //ValueList函数一定会返回一个TStrings实例,并且需要自己释放 Npc.MessageBox(Player, AList.Text); }
注意:操作SQLite数据库的时候需要注意对应的数据库文件是否被其他应用打开,如果被其他应用打开则只是只读状态,增删改等操作是无效的。比如正在被使用中的示范版本的角色数据库和账号数据库
引擎官网:www.91M2.com 交流群:5555999 此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。