meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:world:sqlite [2025/05/02 20:13] – ↷ 页面scripting:native:sqlite被移动至scripting:world:sqlite bibiboxs | scripting:world:sqlite [2025/08/12 00:17] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| < | < | ||
| - | # Native/SQLite | + | # World/SQLite |
| > SQLite类是开发阶段常用功能,可进行[本地数据库(SQLite)](https:// | > SQLite类是开发阶段常用功能,可进行[本地数据库(SQLite)](https:// | ||
| > | > | ||
| - | > **数据库操作需要掌握相关知识,适合复杂数据存储或有明确目的使用,如果只是希望实现简单游戏存档等功能,请考虑使用`Json`功能。** | + | > 数据库操作需要掌握**相关知识**,适合复杂数据存储或有明确目的使用,如果只是希望实现**简单游戏存档**等功能,请考虑使用`Json`功能。 |
| - | [note3] | + | 注意:数据库操作语句将直接影响**数据安全**,因此应该确保严格的**SQL指令输入**,以及字符串的安全过滤。 |
| - | 注意:SQLite类目前**仅支持World端**使用,**读写目录:`Mod\Host`**。 | + | |
| - | [/note] | + | |
| - | **SQLite类仅支持增删查改以及部分扩展操作,若选用SQLite作为存储方式,建议使用Browser等相关工具自行可视化建库,然后使用引擎API进行操作,而不是100%通过引擎API方式。** | ||
| ## Static Function | ## Static Function | ||
| - | ### SQLite.Connect() | + | ### SQLite.Create() |
| - | > 连接指定路径的数据库文件(目录:`Mod\Host`)。 | + | > 创建指定路径的**数据库文件**(目录:`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 | ```javascript | ||
| 行 39: | 行 54: | ||
| ### SQLite.EscapeString() | ### SQLite.EscapeString() | ||
| - | > 格式化数据库字符串语句,确保目标字符串不包含SQL注入等危险。 | + | > 格式化数据库**字符串**,降低目标字符串SQL注入等风险。 |
| ```javascript | ```javascript | ||
| 行 47: | 行 62: | ||
| ```javascript | ```javascript | ||
| let sql = " | let sql = " | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLite.IsSafeString() | ||
| + | |||
| + | > 检查指定数据库**字符串**,判断是否为安全字符串(不包含非安全字符)。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLite.IsSafeString( text: string ): bool | ||
| ``` | ``` | ||
| 行 97: | 行 122: | ||
| - | ### SQLiteSource.Execute() | + | ### SQLiteSource.Query() |
| - | > 执行一段SQL指令,并可能返回目标结果(如果存在查询\执行结果,将返回`SQLiteSourceData`)。 | + | > 执行一段SQL指令,并返回可能的结果。 |
| - | > | + | |
| - | > **==此指令扩展性很高,可进行执行、查询等多种用途,属于万能指令。==** | + | |
| ```javascript | ```javascript | ||
| - | function SQLiteSource.Execute( sql: string ): SQLiteSourceData | + | function SQLiteSource.Query( sql: string ): SQLiteQueryResult |
| ``` | ``` | ||
| - | ```javascript | ||
| - | let gameDB = SQLite.Connect(" | ||
| - | //Only Execute | ||
| - | gameDB.Execute(" | ||
| - | // | + | ### SQLiteSource.Execute() |
| - | let sqlData = gameDB.Execute(" | + | |
| - | DLog(sqlData.GetData(" | + | |
| - | ``` | + | |
| + | > 执行一段SQL指令,不返回任何结果。 | ||
| - | ### SQLiteSource.ExecuteScalar() | ||
| - | > 执行一段SQL指令,并可能返回目标结果。 | + | ### SQLiteSource.ExistTable() |
| - | > | + | |
| - | > **与`SQLiteSource.Execute`方法不同的是,此方法会直接返回(如有)得到的第一个结果(默认:列1行1,可通过参数2+3扩展)。** | + | > 检查指定表是否存在。 |
| ```javascript | ```javascript | ||
| - | function SQLiteSource.ExecuteScalar( sql: string, columnName: string = "", | + | function SQLiteSource.ExistTable( table: string ): bool |
| ``` | ``` | ||
| - | ### SQLiteSource.GetTableRowCount() | + | ### SQLiteSource.DropTable() |
| - | > 获取指定表的行数。 | + | > 删除指定表(不可逆)。 |
| ```javascript | ```javascript | ||
| - | function SQLiteSource.GetTableRowCount( table: string ): int | + | function SQLiteSource.DropTable( table: string ) |
| ``` | ``` | ||
| - | ### SQLiteSource.GetTableColumnCount() | + | ### SQLiteSource.RenameTable() |
| - | > 获取指定表的列数。 | + | > 重命名指定表(需自行做好前提判断)。 |
| ```javascript | ```javascript | ||
| - | function SQLiteSource.GetTableColumnCount( table: string | + | function SQLiteSource.RenameTable( table: string, newTable: string ) |
| ``` | ``` | ||
| - | ### SQLiteSource.ExistTable() | + | ### SQLiteSource.LastInsertRowId() |
| - | > 检查指定表是否存在。 | + | > 获取上次插入的最新`RowID`。 |
| ```javascript | ```javascript | ||
| - | function SQLiteSource.ExistTable( table: string | + | function SQLiteSource.LastInsertRowId(): int64 |
| ``` | ``` | ||
| - | ### SQLiteSource.DropTable() | + | ## SQLiteQueryResult |
| - | > 删除指定表(不可逆)。 | + | ### SQLiteQueryResult.Get() |
| + | |||
| + | > 根据**列\行**获取数值,如果**目标\数值**不存在,默认返回`null`。 | ||
| + | > | ||
| + | > 注意:如果指定**列\行**存在**表内数据**,但**数值内容**为空,同样会返回`null`,准确判断应该使用`ExistColumn() | ExistRow()`。 | ||
| ```javascript | ```javascript | ||
| - | function | + | function |
| + | function SQLiteQueryResult.Get( column: int, row: int = 0, bigType: bool = false ): any | ||
| ``` | ``` | ||
| + | - `bigType`是否转换为**大类型数据**(默认高精度格式),通常不需要开启,返回**常规类型**数据即可。 | ||
| - | ### SQLiteSource.RenameTable() | ||
| - | > 重命名指定表(需自行做好前提判断)。 | + | ### SQLiteQueryResult.ColumnCount() |
| + | |||
| + | > 获取结果列数。 | ||
| ```javascript | ```javascript | ||
| - | function | + | function |
| ``` | ``` | ||
| - | ### SQLiteSource.LastInsertRowId() | + | ### SQLiteQueryResult.RowCount() |
| - | > 获取上次插入的最新`RowID`。 | + | > 获取结果行数。 |
| ```javascript | ```javascript | ||
| - | function | + | function |
| ``` | ``` | ||
| - | ### SQLiteSourceData.GetCount() | + | ### SQLiteQueryResult.ExistColumn() |
| - | > 获取当前查询结果数量。 | + | > 获取**指定列**是否存在。 |
| ```javascript | ```javascript | ||
| - | function | + | function |
| + | function SQLiteQueryResult.ExistColumn( column: int ): bool | ||
| ``` | ``` | ||
| - | ### SQLiteSourceData.GetData() | + | ### SQLiteQueryResult.ExistRow() |
| - | > 获取当前查询的指定索引结果。 | + | > 获取**指定行**是否存在。 |
| ```javascript | ```javascript | ||
| - | function | + | function |
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLiteQueryResult.HasData() | ||
| + | |||
| + | > 获取当前结果**是否有效且存在数据**。 | ||
| + | > | ||
| + | > 注意:有时此选项会返回`false`,但`IsValid()`返回`true`,表示查到了对应的**有效**表,但是**没有找到**匹配的**行数据**。 | ||
| ```javascript | ```javascript | ||
| - | let gameDB = SQLite.Connect(" | + | function SQLiteQueryResult.HasData(): bool |
| + | ``` | ||
| - | //QuerySQL | + | |
| - | let sqlData = gameDB.Execute(" | + | |
| - | if(sqlData.GetCount() > 0) DLog(sqlData.GetData(" | + | ### SQLiteQueryResult.IsValid() |
| + | |||
| + | > 获取当前结果**是否有效**(查询流程正常,即使**没有找到**匹配的**行数据**)。 | ||
| + | > | ||
| + | > 注意:如果此值返回`false`,则代表没有找到任何内容,查询没有意义。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLiteQueryResult.IsValid(): bool | ||
| ``` | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||