这是我的问题:我有这个wine应用程序,可以在漂亮的tableview中向用户显示数据库的内容。使用FMDB executeQuery函数,我可以很容易地从中获取数据,但是每当我尝试向SQLite表中添加内容时,它都会失败。

这是我使用的代码。

do
 {
     try sharedInstance.database!.executeUpdate("INSERT INTO wine VALUES (?, ?, ?)", values: [id, name, wineType])
 }
 catch
 {
     print("error \(error)")
 }

我尝试将所有内容放在一个字符串中,然后将其作为第一个参数发送,然后将nil作为第二个参数发送,这也失败了。此语法来自Data Sanitisation section in the FMDB README from github

我发现了一些类似的案例,但是答案是Objective-C。请注意,我是iOS的新手,对Objective-C一无所知,这是我的第一个Swift应用程序。

我究竟做错了什么 ?

最佳答案

在某些情况下,executeUpdate失败,因此请首先尝试使用executeQueryexecuteStatments修复此问题。

如果它不起作用,我认为打开数据库后执行sql语句的正确方法是:

executeUpdate("INSERT INTO wine VALUES ('\(id)', '\(name)', '\(wineType)')")

语句成功执行后,关闭数据库。您的ID在数据库中是什么类型?它是自动递增的吗?

您在控制台中遇到什么错误?尝试使用断点,看看发生了什么。

更新
我不认为先前的代码在生产环境中会使用,因为它受SQL注入Reference的约束,我认为将FMDB与iOS配合使用,并且先前的代码也可以使用。

10-07 19:26
查看更多