gpt4 book ai didi

ios - FMDB 更新语句不使用我的值

转载 作者:行者123 更新时间:2023-11-28 15:03:48 28 4
gpt4 key购买 nike

您好,我正在尝试对数据库中的现有行执行更新。我一直在我的 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 注入(inject)之类的)。

如何修复此语句以便我可以更新我的应用程序上的 sql 数据库?

最佳答案

更新语句将是这样的:

-(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];
}

快速版本:

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()
}

关于ios - FMDB 更新语句不使用我的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48694335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com