在一个教程中,我看到了使用SQlite数据库使用execSQL更新数据的代码:
String update = "UPDATE FRUIT SET COLOR=? WHERE ID=?";
myDatabase.execSQL( update, new Object[] {"RED", 7});
Cursor cursor = myDatabase.rawQuery("SELECT * FROM FRUIT;", null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("NAME"));
String color = cursor.getString(cursor.getColumnIndex("COLOR"));
Log.i(TAG, "onCreate: Name: " + name + ", color: " + color);
} while (cursor.moveToNext());
}但是,我在Android的官方文档中看到了这:

使用execSQL的代码可以工作,但是最好使用更新,或者我仍然可以使用execSQL,因为它工作了?什么是更好的良好做法?由于本教程来源可靠,为什么要使用execSQL?
发布于 2018-05-11 23:56:02
有关使用execSQL的问题/警告可能有几个原因,其中之一是在使用execSQL时不返回任何内容,而方便方法则返回可能有用的值。
insert将返回一个包含插入的Other-1行的id的long。update和delete返回受影响的行数。
使用方便的方法还可以通过构建底层SQL、添加关键字和封装字符串来减少键入错误的可能性,而且对于某些重要的问题,还提供了一定程度的针对SQL注入的保护(execSQL的bindArgs也提供了针对SQL注入的保护,与rawQuery一样)。
但是,也有一些限制,有时在一些更复杂的情况下,使用execSQL/rawQuery成为必要的。
https://stackoverflow.com/questions/50280487
复制相似问题