首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite.swift框架

SQLite.swift框架
EN

Stack Overflow用户
提问于 2019-11-27 04:23:29
回答 1查看 514关注 0票数 0

此函数不起作用!我可以添加一些其他功能,如果你想我有问题保存,它不工作

输出-“连接正常操作无法完成。(SQLite.Result错误0。)”

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-27 04:57:07

你需要解决的两件事,或者至少要考虑你的代码。当您创建像这样的列时

代码语言:javascript
复制
let nameTemp1 = Expression<String>("namePoint")

您是说它是强制的(非null),要使它成为可选的,类型必须是可选的,<String?>

代码语言:javascript
复制
let nameTemp1 = Expression<String?>("namePoint")

因此,这是您可能想要在表中更改的内容

其次,您的插入是错误的,因为您实际上执行了4次插入,但是一次只有一列被赋予了一个值,并且由于所有列都是强制的,这将生成一个错误。因此,除非将列设置为可选,否则必须为insert语句提供所有值

代码语言:javascript
复制
try db.run(TempPointOriginal.insert(nameTemp1 <- name1, 
                                    latTemp1 <- lat1, 
                                    longTemp1 <- long1, 
                                    addressTemp1 <- address1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59058822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档