如何操作数据库
91M2说明书 > 引擎脚本功能 > 脚本示例 >


export function Main(NpcTNormNpcPlayerTPlayObjectArgsTArgs): void {
    let ADataSetTDataSet;
    let AListTStringList;
    //普通执行语句不需要返回
    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(PlayerAList.Text);
        } finally {

        }
    }
    //直接将一个查询结果中的第一个字段的值填入到一个TStrings
    AList = GameLib.DBEngine.ValueList('HumDB''SELECT sChrName FROM Players');  //ValueList函数一定会返回一个TStrings实例,并且需要自己释放
    Npc.MessageBox(PlayerAList.Text);
 


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

引擎官网:www.91M2.com   交流群:5555999   此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。