gpt4 book ai didi

android - 带有更新的 execSQL() 不更新

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:15 26 4
gpt4 key购买 nike

我正在尝试使用 rawQueryexecSQL 方法来操作我的数据库,而不是 .update.insert 等。我正在尝试使用以下代码执行更新:

db.execSQL("UPDATE configuration " +
"SET number_fields = " + number_fields + ", "
+ "frequency = " + frequency + ", "
+ "ag = " + ag + ", "
+ "number_alarms = " + number_alarms + ", "
+ "failed_rapper = " + failed_rapper + ", "
+ "max_mv = " + max_mv + ", "
+ "max_nav = " + max_nav + " "
+ "WHERE serial_id = " + Integer.toString(id) + ";");

执行此操作后,会出现一个日志,说明更新已发生并且似乎有效,但当我尝试在表上执行选择语句时,它返回以下错误:

06-10 10:01:47.564: W/System.err(3815): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

现在,我在 Android 中使用 SQLite 数据库浏览器手动插入的不同数据上执行了相同的 SELECT,它工作正常。我还在 SQLite 浏览器中执行了相同的 UPADTE,它在那里工作。因此我知道问题是在 Android 上运行时更新命令不起作用。

问题:为什么 UPDATE 命令在 execSQL() 方法中不起作用?

最佳答案

来自Android SQLiteDatabase class documentation:

Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.

It has no means to return any data (such as the number of affected rows). Instead, you're encouraged to use insert(String, String, ContentValues), update(String, ContentValues, String, String[]), et al, when possible.

然后:

For UPDATE statements, use any of the following instead.

update(String, ContentValues, String, String[])

updateWithOnConflict(String, ContentValues, String, String[], int)

据我所知,execSQL 方法更多用于更高级别的数据库操作,例如创建表和更改模式,以及 .query.update.delete等方法应该用于修改行。我不确定除了 .update 之外您还有其他选择吗?执行此操作。

关于android - 带有更新的 execSQL() 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026633/

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