我现在正在研究FMDB,并且有很多种方法' executeQuery'和' executeUpdate'。
executeQuery(sql,values:[Any])
executeQuery(sql,withArgumentsIn: [Any])
executeUpdate(sql,values:[Any])
executeUpdate(sql,withArgumentsIn: [Any])
我想知道这些方法的不同之处以及何时必须使用哪种方法。
我可以使用任何方法吗?
我感谢您的所有答案。 谢谢
答案 0 :(得分:1)
executeQuery(sql,values:[Any]):
此方法的返回类型为 FMResultSet 。它将提供查询选择的所有记录。我们可以使用此方法执行 SELECT 语句。
executeUpdate:
此方法的返回类型为 Bool 。我们可以使用这种方法执行 INSERT,UPDATE,DELETE 语句。
例如
let sql = "insert into User(UserName,Address,Postcode) values(:username,:address,:postcode)"
let args = [“username”:”Tom”,” address”:”Newyork”,” postcode”:”123467”]
executeUpdate(sql,values:args)
答案 1 :(得分:0)
<强>的executeUpdate(...)强>
executeUpdate(...)方法用于所有可以的查询 修改数据库(换句话说,非选择查询)
database.executeUpdate("insert into test (x, y, z) values (?, ?, ?)", values: ["a", "b", "c"])
<强>的executeQuery(...)强>
SELECT语句是一个查询,并通过其中一个执行 -executeQuery ...方法。
database.executeQuery("select x, y, z from test", values: nil)
答案 2 :(得分:0)
您可以通过查看功能签名来区分它们。
executeQuery(sql: String, withArgumentsIn: [Any]) -> FMResultSet?
executeQuery(sql: String, values: [Any]?) throws -> FMResultSet
executeQuery
返回一个FMResultSet
,因此它用于返回数据的语句(即SELECT语句)。两种版本之间的差异在于查询失败时会发生什么-第一种版本在失败时返回nil,而第二种则引发错误。
executeUpdate(sql: String, withArgumentsIn: [Any]) -> Bool
executeUpdate(sql: String, values: [Any]?) throws -> Void
executeUpdate
不返回数据;它基本上用于其他所有内容。像以前一样,两者之间的区别在于它们如何处理失败-第一个返回布尔值(如果语句成功,则返回true;如果失败,则返回false),而第二个则不返回任何内容,但如果失败则抛出错误。 / p>