此函数不起作用!我可以添加一些其他功能,如果你想我有问题保存,它不工作
输出-“连接正常操作无法完成。(SQLite.Result错误0。)”
let db = try Connection("\(path)/database.sqlite3")
print("Connected Ok")
let nameTemp1 = Expression<String>("namePoint")
let latTemp1 = Expression<Double>("lat")
let longTemp1 = Expression<Double>("long")
let addressTemp1 = Expression<String?>("address")
let id = Expression<Int64>("id")
try db.run(TempPointOriginal.create(ifNotExists: true) { t in
t.column(id, primaryKey: true)
t.column(nameTemp1)
t.column(latTemp1)
t.column(longTemp1)
t.column(addressTemp1)
})
try db.run(TempPointOriginal.insert(/*or: .replace,*/ nameTemp1 <- name1))
try db.run(TempPointOriginal.insert(/*or: .replace,*/ latTemp1 <- lat1))
try db.run(TempPointOriginal.insert(/*or: .replace,*/ longTemp1 <- long1))
try db.run(TempPointOriginal.insert(/*or: .replace,*/ addressTemp1 <- address1))发布于 2019-11-27 04:57:07
你需要解决的两件事,或者至少要考虑你的代码。当您创建像这样的列时
let nameTemp1 = Expression<String>("namePoint")您是说它是强制的(非null),要使它成为可选的,类型必须是可选的,<String?>
let nameTemp1 = Expression<String?>("namePoint")因此,这是您可能想要在表中更改的内容
其次,您的插入是错误的,因为您实际上执行了4次插入,但是一次只有一列被赋予了一个值,并且由于所有列都是强制的,这将生成一个错误。因此,除非将列设置为可选,否则必须为insert语句提供所有值
try db.run(TempPointOriginal.insert(nameTemp1 <- name1,
latTemp1 <- lat1,
longTemp1 <- long1,
addressTemp1 <- address1))https://stackoverflow.com/questions/59058822
复制相似问题