您好我正在尝试对数据库中的现有行执行更新。我一直在我的sql语句中使用问号?
,并给FMDB一个值数组来替换?
&。以下是使用此逻辑的示例INSERT
语句:
let sqlStatement = "INSERT INTO Cards (Column1, Column2, Column3) VALUES (?, ?, ?)"
try! db.executeUpdate(sqlStatement, values: Data)
现在我想为更新语句执行此操作,我已经在SQLPro中使用了该语句,但我似乎无法让它在1行上运行。这是我在swift / fmdb之外使用的SQL查询:
UPDATE MyTable
SET ColumnId='5', Column2='Helloworld', Column3='data'
WHERE ColumnId='5'
现在这是我在swift中的陈述:
let sqlStatement = "UPDATE Cards SET ColumnId='?', Column2='?', Column3='?'"
try! db.executeUpdate(sqlStatement, values: Data)
当我运行此语句时,更新将完成,但数据库中的所有数据都将设置为?。我不想直接将我的数据放入sql语句字符串中(因为文档告诉你不要这样做,避免使用sql注入)。
如何修复此语句以便我可以在我的应用程序上更新sql数据库?
答案 0 :(得分:1)
更新声明将如下:
-(void)updateValue:(Model *)data
{
[instance.database open];
BOOL isUpdated=[instance.database executeUpdate:@"UPDATE Cards SET ColumnId =? , Column2 =? , Column3 =? WHERE ColumnId =?",data.ColumnId,data.Column2,data.Column3,data.ColumnId];
[instance.database close];
}
Swift版本:
func updateValue(_ data: Model) {
instance.database.open()
let isUpdated: Bool = instance.database.executeUpdate("UPDATE Cards SET ColumnId =? , Column2 =? , Column3 =? WHERE ColumnId =?", data.columnId, data.column2, data.column3, data.columnId)
instance.database.close()
}