作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个在 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/
我是一名优秀的程序员,十分优秀!