gpt4 book ai didi

android - SQLiteStatement 执行 SELECT/INSERT/DELETE/UPDATE

转载 作者:IT王子 更新时间:2023-10-29 06:26:17 24 4
gpt4 key购买 nike

我在优化 SQLite 事务时使用经过编译的 SQLiteStatement 和事务,但我正在阅读 execute 的文档功能:

Execute this SQL statement, if it is not a SELECT / INSERT / DELETE / UPDATE, for example CREATE / DROP table, view, trigger, index etc.

这似乎暗示这个函数不应该与 SELECT/INSERT/DELETE/UPDATE 语句一起使用,但我有代码将它与插入一起使用并且可以工作。

我知道 executeInsert 和其他方法,但是 executeUpdateDelete 在我的 API 级别不可用,所以我可以使用 execute

此外,如果我不需要最后的插入 ID 或受影响的行数,我应该使用 execute 而不是 executeInsert 等,换句话说就是它更高效?

最佳答案

execute 可能并不比 executeInsert 快,甚至可能更慢(在 ICS execute 上调用 executeUpdateDelete 并丢弃返回值) .您需要对其进行测试,但我怀疑您会在这里发现真正的区别。

AFAIK,如果您不需要返回值,则仅使用 execute 是安全的,但我不会指望在未来的 Android 版本中保持这种状态。文档说不,所以也许有人会改变行为来反射(reflect)这一点。较旧的实现似乎也使用 execute (例如 2.1 delete() sourcecode )。例如 Jelly Bean 已更改 a lot在 SQLite 的幕后,但在使用 execute

时它应该仍然有效

此外,如果您不一遍又一遍地使用相同的 SQLiteStatement 而只是重新绑定(bind) args,则可能不值得使用它。与实际的数据库访问和所需的磁盘 I/O 相比,每次调用常规 insertupdate 等方法时都构建一个新的。另一方面,事务有很大帮助,因为为每个语句同步磁盘上的数据库状态真的很慢。

关于android - SQLiteStatement 执行 SELECT/INSERT/DELETE/UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365558/

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