meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:world:sqlite [2025/05/02 20:13] – 移除 - 外部编辑 (Unknown date) 127.0.0.1 | scripting:world:sqlite [2025/08/12 00:17] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | < | ||
| + | # World/ | ||
| + | > SQLite类是开发阶段常用功能,可进行[本地数据库(SQLite)](https:// | ||
| + | > | ||
| + | > 数据库操作需要掌握**相关知识**,适合复杂数据存储或有明确目的使用,如果只是希望实现**简单游戏存档**等功能,请考虑使用`Json`功能。 | ||
| + | |||
| + | 注意:数据库操作语句将直接影响**数据安全**,因此应该确保严格的**SQL指令输入**,以及字符串的安全过滤。 | ||
| + | |||
| + | |||
| + | |||
| + | ## Static Function | ||
| + | |||
| + | ### SQLite.Create() | ||
| + | |||
| + | > 创建指定路径的**数据库文件**(目录:`Mod\Host`)。 | ||
| + | > | ||
| + | > 补充:数据库文件仍然属于**主机文件**,因此可以通过`World.Core.DeleteHostFile()`进行删除(不可恢复)。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLite.Create( path: string, sql: string = null, isReplace: bool = false ) | ||
| + | ``` | ||
| + | |||
| + | ```javascript | ||
| + | SQLite.Create(" | ||
| + | ``` | ||
| + | |||
| + | - `path`文件路径 | ||
| + | - `sql`创建数据的执行命令 | ||
| + | - `isReplace`如果文件已经存在,是否进行覆盖(不可恢复) | ||
| + | |||
| + | |||
| + | |||
| + | ### 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 = " | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLite.IsSafeString() | ||
| + | |||
| + | > 检查指定数据库**字符串**,判断是否为安全字符串(不包含非安全字符)。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLite.IsSafeString( text: string ): bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ## 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.Query() | ||
| + | |||
| + | > 执行一段SQL指令,并返回可能的结果。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteSource.Query( sql: string ): SQLiteQueryResult | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteSource.Execute() | ||
| + | |||
| + | > 执行一段SQL指令,不返回任何结果。 | ||
| + | |||
| + | |||
| + | |||
| + | ### 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(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ## SQLiteQueryResult | ||
| + | |||
| + | ### SQLiteQueryResult.Get() | ||
| + | |||
| + | > 根据**列\行**获取数值,如果**目标\数值**不存在,默认返回`null`。 | ||
| + | > | ||
| + | > 注意:如果指定**列\行**存在**表内数据**,但**数值内容**为空,同样会返回`null`,准确判断应该使用`ExistColumn() | ExistRow()`。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.Get( column: string, row: int = 0, bigType: bool = false ): any | ||
| + | function SQLiteQueryResult.Get( column: int, row: int = 0, bigType: bool = false ): any | ||
| + | ``` | ||
| + | |||
| + | - `bigType`是否转换为**大类型数据**(默认高精度格式),通常不需要开启,返回**常规类型**数据即可。 | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.ColumnCount() | ||
| + | |||
| + | > 获取结果列数。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.ColumnCount(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.RowCount() | ||
| + | |||
| + | > 获取结果行数。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.RowCount(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.ExistColumn() | ||
| + | |||
| + | > 获取**指定列**是否存在。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.ExistColumn( column: string ): bool | ||
| + | function SQLiteQueryResult.ExistColumn( column: int ): bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.ExistRow() | ||
| + | |||
| + | > 获取**指定行**是否存在。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.ExistRow( row: int ): bool | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.HasData() | ||
| + | |||
| + | > 获取当前结果**是否有效且存在数据**。 | ||
| + | > | ||
| + | > 注意:有时此选项会返回`false`,但`IsValid()`返回`true`,表示查到了对应的**有效**表,但是**没有找到**匹配的**行数据**。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.HasData(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.IsValid() | ||
| + | |||
| + | > 获取当前结果**是否有效**(查询流程正常,即使**没有找到**匹配的**行数据**)。 | ||
| + | > | ||
| + | > 注意:如果此值返回`false`,则代表没有找到任何内容,查询没有意义。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.IsValid(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | </ | ||