Tro*_*omB 3 sqlite android sql-update android-sqlite
我试图使用rawQuery和execSQL用于操纵方法,而不是我的数据库,.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) + ";");
Run Code Online (Sandbox Code Playgroud)
在此操作之后,有一个日志表明发生了更新并且它似乎正常工作,但是当我尝试在表上执行select语句时,它返回时出现以下错误:
06-10 10:01:47.564: W/System.err(3815): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
Run Code Online (Sandbox Code Playgroud)
现在我在Android中使用SQLite数据库浏览器手动插入的不同数据上执行了相同的SELECT,它运行正常.我也在SQLite浏览器中执行了相同的UPADTE,它在那里工作.因此我知道问题是在Android上运行时UPDATE命令不起作用.
问题:为什么UPDATE命令在execSQL()方法中不起作用?
执行一个非SELECT的SQL语句或任何其他返回数据的SQL语句.
它无法返回任何数据(例如受影响的行数).相反,我们鼓励您尽可能使用insert(String,String,ContentValues),update(String,ContentValues,String,String [])等.
然后呢:
对于UPDATE语句,请改用以下任何一种语句.
update(String,ContentValues,String,String [])
updateWithOnConflict(String,ContentValues,String,String [],int)
据我所知道的,execSQL方法是更多更高级别的数据库操作,如创建表和改变的模式,和.query,.update,.delete,等方法应被用于修改行.除了.update执行此操作之外,我不确定您还有其他选择.
| 归档时间: |
|
| 查看次数: |
9130 次 |
| 最近记录: |