你好,我正在尝试对我的数据库中的现有行执行更新。我一直在我的sql语句中使用问号?,并给FMDB一个值数组来替换?的值。以下是使用此逻辑的INSERT语句示例:
let sqlStatement = "INSERT INTO Cards (Column1, Column2, Column3) VALUES (?, ?, ?)"
try! db.executeUpdate(sqlStatement, values: Data)现在我想对update语句执行此操作,我已经让该语句在SQLPro中工作,但我似乎不能让它在一行上工作。下面是我在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)当我运行这条语句时,update通过,但数据库中的所有数据都被设置为?我不想将我的数据直接放入sql语句字符串中(正如文档告诉您的那样,避免sql注入之类的操作)。
如何修复此语句,以便更新应用程序上的sql数据库?
发布于 2018-02-09 04:42:15
Update语句如下:
-(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()
}https://stackoverflow.com/questions/48694335
复制相似问题