zm.SQLiteCreateTbl 创建SQLite3数据表
🎯功能
创建SQLite3数据库的数据表,若数据库文件不存在,则自动创建。
📜语法
结果 = zm.SQLiteCreateTbl(数据库路径, 表名, 字段[, 扩展])
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
数据库路径 | 字符串 | 数据库文件所在路径 |
表名 | 字符串 | 要创建的数据表名 |
字段 | 表 | 要创建的字段与数据类型和约束, 支持多种格式, 不再支持旧版格式{"字段名 数据类型", ...} , 各种格式介绍如下极简格式: {字段名, ...} 例如 {"id", "name"} , 表示创建id和name两个字段, 未指定类型的字段默认TEXT , 唯独当字段名为id时, 会被自动设置为整数型主键, 即INTEGER PRIMARY KEY 标准数组格式: { {字段名, 类型或约束, ...},...} 例如 { {"age", "INTEGER"}, {"name", "TEXT", "NOT NULL"} } , 表示创建INTEGER型的age字段和TEXT型的name字段, 且name字段为NOT NULL. 对象格式: { {“name”:对象名, "type":数据类型, "constraints":约束, "primary":是否主键, "unique":是否唯一, "notnull":是否非空, "default":默认值}, ...} 例如 {{"name":"id", "type":"INTEGER", "primary":true, "unique":true}, {"name":"姓名", "type":"TEXT","notnull":true}} , 表示创建唯一主键id字段, 数据类型整数型, 创建数据类型是TEXT的姓名字段, 要求不能为空值混合格式: {字段名, {字段名, 类型或约束, ...}, {“name”:对象名, ...}, ...} 例如 {"id", {"name", "TEXT", "NOT NULL"}, {"name":"age", "type":"INTEGER"}} , 表示创建默认INTEGER主键id, TEXT非空字段name, INTEGER字段age |
扩展 | 表 | 可选, 扩展功能, 默认格式为{"ifNotExists":true, "overwrite":false} , 当ifNotExists为true时, 若表已存在则跳过创建. 当overwrite为true时, 将会强制覆盖创建新表 |
参数字段 | 例子 | 解释 |
---|---|---|
{字段名, ...} | {"id", "name"} | 极简格式, 创建id和name两个字段, 未指定类型的字段均为TEXT , 唯独当字段名为id时, 会被自动设置为整数型主键, 即INTEGER PRIMARY KEY |
{ {字段名, 类型或约束, ...}, ...} | { {"age", "INTEGER"}, {"name", "TEXT", "NOT NULL"} } | 标准数组格式, 创建INTEGER型的age字段和TEXT型的name字段, 且name字段为NOT NULL |
{ {“name”:对象名, "type":数据类型, "constraints":约束, "primary":是否主键, "unique":是否唯一, "notnull":是否非空, "default":默认值}, ...} | {{"name":"id", "type":"INTEGER", "primary":true, "unique":true}, {"name":"姓名", "type":"TEXT", "notnull":true}} | 对象格式, 创建唯一主键id字段, 数据类型整数型, 创建数据类型是TEXT的姓名字段, 要求不能为空值 |
{字段名, {字段名, 类型或约束, ...}, {“name”:对象名, ...}, ...} | {"id", {"name", "TEXT", "NOT NULL"}, {"name":"age", "type":"INTEGER"}} | 混合格式, 创建默认INTEGER主键id, TEXT非空字段name, INTEGER字段age |
📤返回
布尔值
,成功返回true
,失败返回false
💡示例
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
Dim DBpath = "/sdcard/Pictures/zimao.db"
//极简模式, 执行SQL:CREATE TABLE IF NOT EXISTS test1 ([id] INTEGER PRIMARY KEY NOT NULL, [name] TEXT, [age] TEXT);
TracePrint zm.SQLiteCreateTbl(DBpath, "test1", {"id","name","age"})
//标准数组格式, 执行SQL:DROP TABLE IF EXISTS test2; CREATE TABLE IF NOT EXISTS test2 ([id] INTEGER PRIMARY KEY NOT NULL, [age] INTEGER DEFAULT 18);
Dim fields1 = {{"id", "INTEGER", "PRIMARY KEY"}, {"age","INTEGER", "DEFAULT 18"}}
TracePrint zm.SQLiteCreateTbl(DBpath, "test2", fields1, {"overwrite":true})
//对象格式: 执行SQL:CREATE TABLE IF NOT EXISTS test3 ([od_id] TEXT PRIMARY KEY NOT NULL UNIQUE, [纬度] REAL NOT NULL);
Dim fields2 = {{"name":"od_id", "type":"TEXT", "primary":true, "unique":true}, {"name":"纬度", "type":"REAL","notnull":true}}
TracePrint zm.SQLiteCreateTbl(DBpath, "test3", fields2)
//对象格式: 执行SQL:CREATE TABLE IF NOT EXISTS test4 ([id] INTEGER PRIMARY KEY NOT NULL, [age] INTEGER DEFAULT 18, [纬度] REAL NOT NULL);
Dim Fields3 = {"id", {"age","INTEGER", "DEFAULT 18"}, {"name":"纬度", "type":"REAL","notnull":true}}
TracePrint zm.SQLiteCreateTbl(DBpath, "test4", Fields3)
📘备注
- V1.1738: 加入命令
- V4.2514: 移除
{"字段名 数据类型", ...}
格式, 加入更多字段的语法, 支持覆盖创建