我现在正在研究FMDB,有很多种方法'executeQuery'和'executeUpdate'。
executeQuery(sql,values:[Any])
executeQuery(sql,withArgumentsIn: [Any])
executeUpdate(sql,values:[Any])
executeUpdate(sql,withArgumentsIn: [Any])
我想知道这些方法的不同之处以及何时必须使用哪种方法。
我可以使用任何方法吗?
我很感谢你的所有答案。谢谢
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)
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)
您可以通过查看函数签名来区分。
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),而第二个不返回任何内容,但如果失败则抛出错误。