跳到主要内容

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: 移除{"字段名 数据类型", ...}格式, 加入更多字段的语法, 支持覆盖创建