Swift FMDB:我必须使用哪种方法?

时间:2017-10-04 08:36:34

标签: swift fmdb

我现在正在研究FMDB,并且有很多种方法' executeQuery'和' executeUpdate'。

executeQuery(sql,values:[Any])
executeQuery(sql,withArgumentsIn: [Any])
executeUpdate(sql,values:[Any])
executeUpdate(sql,withArgumentsIn: [Any])

我想知道这些方法的不同之处以及何时必须使用哪种方法。

我可以使用任何方法吗?

我感谢您的所有答案。 谢谢

3 个答案:

答案 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)

FMDB

答案 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>