meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:world:sqlite [2025/05/02 20:13] – 移除 - 外部编辑 (Unknown date) 127.0.0.1 | scripting:world:sqlite [2025/05/02 20:13] (当前版本) – bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | < | ||
+ | # World/ | ||
+ | > SQLite类是开发阶段常用功能,可进行[本地数据库(SQLite)](https:// | ||
+ | > | ||
+ | > **数据库操作需要掌握相关知识,适合复杂数据存储或有明确目的使用,如果只是希望实现简单游戏存档等功能,请考虑使用`Json`功能。** | ||
+ | |||
+ | [note3] | ||
+ | 读写目录:`Mod\Host`**。 | ||
+ | [/note] | ||
+ | |||
+ | **SQLite类仅支持增删查改以及部分扩展操作,若选用SQLite作为存储方式,建议使用Browser等相关工具自行可视化建库,然后使用引擎API进行操作,而不是100%通过引擎API方式。** | ||
+ | |||
+ | |||
+ | ## Static Function | ||
+ | |||
+ | ### SQLite.Connect() | ||
+ | |||
+ | > 连接指定路径的数据库文件(目录:`Mod\Host`)。 | ||
+ | > | ||
+ | > **想要操作一个数据库,连接数据库是必须的。** | ||
+ | > | ||
+ | > **数据库的操作仅在当前场景生效。** | ||
+ | |||
+ | ```javascript | ||
+ | function SQLite.Connect( path: string ): SQLiteSource | ||
+ | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let gameDB = SQLite.Connect(" | ||
+ | if(gameDB != null) | ||
+ | { | ||
+ | gameDB.Execute(" | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLite.EscapeString() | ||
+ | |||
+ | > 格式化数据库字符串语句,确保目标字符串不包含SQL注入等危险。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLite.EscapeString( text: string ): string | ||
+ | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let sql = " | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ## Function | ||
+ | |||
+ | ### SQLiteSource.Disconnect() | ||
+ | |||
+ | > 关闭当前数据库连接,停止使用(场景切换时会自动执行)。 | ||
+ | |||
+ | [note2] | ||
+ | 注意:因为`SQLite`是基于文件流操作的,所以当数据库中途不再使用时,应该执行`Disconnect()`释放文件权限。 | ||
+ | [/note] | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.Disconnect() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.Begin() | ||
+ | |||
+ | > 开始数据库操作事务。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.Begin() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.Commit() | ||
+ | |||
+ | > 提交数据库操作事务。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.Commit() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.Rollback() | ||
+ | |||
+ | > 回退数据库操作事务。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.Rollback() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.Execute() | ||
+ | |||
+ | > 执行一段SQL指令,并可能返回目标结果(如果存在查询\执行结果,将返回`SQLiteSourceData`)。 | ||
+ | > | ||
+ | > **==此指令扩展性很高,可进行执行、查询等多种用途,属于万能指令。==** | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.Execute( sql: string ): SQLiteSourceData | ||
+ | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let gameDB = SQLite.Connect(" | ||
+ | |||
+ | //Only Execute | ||
+ | gameDB.Execute(" | ||
+ | |||
+ | //QuerySQL | ||
+ | let sqlData = gameDB.Execute(" | ||
+ | DLog(sqlData.GetData(" | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.ExecuteScalar() | ||
+ | |||
+ | > 执行一段SQL指令,并可能返回目标结果。 | ||
+ | > | ||
+ | > **与`SQLiteSource.Execute`方法不同的是,此方法会直接返回(如有)得到的第一个结果(默认:列1行1,可通过参数2+3扩展)。** | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.ExecuteScalar( sql: string, columnName: string = "", | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.GetTableRowCount() | ||
+ | |||
+ | > 获取指定表的行数。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.GetTableRowCount( table: string ): int | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.GetTableColumnCount() | ||
+ | |||
+ | > 获取指定表的列数。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.GetTableColumnCount( table: string ): int | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.ExistTable() | ||
+ | |||
+ | > 检查指定表是否存在。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.ExistTable( table: string ): bool | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.DropTable() | ||
+ | |||
+ | > 删除指定表(不可逆)。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.DropTable( table: string ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.RenameTable() | ||
+ | |||
+ | > 重命名指定表(需自行做好前提判断)。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.RenameTable( table: string, newTable: string ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSource.LastInsertRowId() | ||
+ | |||
+ | > 获取上次插入的最新`RowID`。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSource.LastInsertRowId(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSourceData.GetCount() | ||
+ | |||
+ | > 获取当前查询结果数量。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSourceData.GetCount(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### SQLiteSourceData.GetData() | ||
+ | |||
+ | > 获取当前查询的指定索引结果。 | ||
+ | |||
+ | ```javascript | ||
+ | function SQLiteSourceData.GetData( columnName: string, index: int = 0 ): Any | ||
+ | ``` | ||
+ | |||
+ | ```javascript | ||
+ | let gameDB = SQLite.Connect(" | ||
+ | |||
+ | //QuerySQL | ||
+ | let sqlData = gameDB.Execute(" | ||
+ | if(sqlData.GetCount() > 0) DLog(sqlData.GetData(" | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </ |