我正在android中使用sqlite数据库开发一个应用程序。 这是我的表 DDL 代码。
db.execSQL("CREATE TABLE 'ad_img' (" +
"'ad_img_uid' INTEGER PRIMARY KEY AUTOINCREASE NOT NULL," +
"'ad_uid' INTEGER," +
"'ad_img_url' TEXT(255) NOT NULL," +
"'ad_img_local' TEXT(255) NOT NULL" +
")");
这是我的更新sql代码。
public int updateLocalPathTOAdImg(int ad_uid, String ad_img_url, String ad_img_local) {
int result = 0;
try {
String sql = "UPDATE 'ad_img' SET " +
"'ad_img_local' = '" + ad_img_local + "' " +
"WHERE 'ad_uid' = " + ad_uid + " AND 'ad_img_url' = '" + ad_img_url + "'";
m_db.execSQL(sql);
return result; ///////updated row count??
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
当然,我可以使用update()和changes()函数。 但我想使用 execSQL() 函数。
我可以使用 execSQL() 函数获取更新的行数吗?
最佳答案
在 SQLite C API ,程序执行UPDATE语句后,可以通过调用sqlite3_changes()来确定更改的行数。 .
在 Android 框架中,唯一调用 sqlite3_changes()
的地方是 update()
方法。
如果您需要执行的更新对于 update()
来说过于复杂,则必须执行第二个查询来调用内置 changes() function :
db.execSQL("UPDATE ...");
long changes = DatebaseUtils.longForQuery(db, "SELECT changes()", null);
或者,您可以启用已弃用的 PRAGMA count_changes (希望它可用)从 UPDATE 语句本身返回数字,就好像它是一个查询一样:
class MyOpenHelper {
...
void onConfigure(SQLiteDatabase db) {
db.execSQL("PRAGMA count_changes = ON");
}
}
...
changes = DatebaseUtils.longForQuery(db, "UPDATE ...", null);
关于android - 如何在 Android 中使用 sqlite 获取更新的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209452/