【问题标题】:SQLite.swift frameworkSQLite.swift 框架
【发布时间】:2020-03-22 08:06:40
【问题描述】:

这个功能不起作用!!! 如果您愿意,我可以添加一些其他功能 我的保存有问题,它不起作用

输出 - “连接正常 操作无法完成。 (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))

【问题讨论】:

  • 我不使用SQLite.swift,但是0一般不会出错,SQLITE_OK,所以这个有点好奇。但是对各个字段进行单独的.insert 调用似乎有点可疑。我会在一个 .insert(或者,如果存在,一个 .replace)中完成这些。例如。我原以为会是try db.run(TempPointOriginal.insert(nameTemp1 &lt;- name1, latTemp1 &lt;- lat1, longTemp1 &lt;- long1, addressTemp1 &lt;- address1))。请参阅该 repo 的 try db.run(users.insert(name &lt;- "Alice", email &lt;- "alice@mac.com")) 示例。
  • 顺便说一句,哪一行抛出该错误?单步执行您的代码或添加日志语句,以便您可以准确地确定哪一行正在抛出它。另外,您在哪里打印“操作无法完成”消息?我假设这包含在 do-catch 语句中,并且打印在 catch 中,但您尚未与我们分享,所以有点不清楚。看到“操作无法完成。 (SQLite.Result 错误 0。)”让我想知道您是在 catch 块之外还是在其他一些 SQL 之后打印了错误,从而丢失了错误详细信息。
  • 没有错误,只是没有保存我的数据,结果为空..

标签: ios sql swift sqlite sqlite.swift


【解决方案1】:

您需要修复或至少考虑您的代码的两件事。当您创建这样的列时

let nameTemp1 = Expression<String>("namePoint")

您是说它是强制性的(不是 null),要使其成为可选类型必须是可选的,&lt;String?&gt;

let nameTemp1 = Expression<String?>("namePoint")

所以这是你可能想在你的表中改变的东西

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

try db.run(TempPointOriginal.insert(nameTemp1 <- name1, 
                                    latTemp1 <- lat1, 
                                    longTemp1 <- long1, 
                                    addressTemp1 <- address1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2017-05-08
    相关资源
    最近更新 更多