meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:world:sqlite [2025/07/30 02:56] – bibiboxs | scripting:world:sqlite [2025/08/12 00:17] (当前版本) – bibiboxs | ||
|---|---|---|---|
| 行 6: | 行 6: | ||
| > 数据库操作需要掌握**相关知识**,适合复杂数据存储或有明确目的使用,如果只是希望实现**简单游戏存档**等功能,请考虑使用`Json`功能。 | > 数据库操作需要掌握**相关知识**,适合复杂数据存储或有明确目的使用,如果只是希望实现**简单游戏存档**等功能,请考虑使用`Json`功能。 | ||
| - | 注意:**SQLite**类支持增删查改以及部分扩展操作,若选用**SQLite**作为存储方式,建议使用**Browser**相关工具可视化**建库和管理**,而不是100%通过引擎API方式。 | + | 注意:数据库操作语句将直接影响**数据安全**,因此应该确保严格的**SQL指令输入**,以及字符串的安全过滤。 |
| 行 54: | 行 54: | ||
| ### SQLite.EscapeString() | ### SQLite.EscapeString() | ||
| - | > 格式化数据库字符串语句,确保目标字符串不包含SQL注入等危险。 | + | > 格式化数据库**字符串**,降低目标字符串SQL注入等风险。 |
| ```javascript | ```javascript | ||
| 行 62: | 行 62: | ||
| ```javascript | ```javascript | ||
| let sql = " | let sql = " | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### SQLite.IsSafeString() | ||
| + | |||
| + | > 检查指定数据库**字符串**,判断是否为安全字符串(不包含非安全字符)。 | ||
| + | |||
| + | ```javascript | ||
| + | function SQLite.IsSafeString( text: string ): bool | ||
| ``` | ``` | ||
| 行 112: | 行 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 | ||
| ``` | ``` | ||
| + | |||
| + | |||