gpt4 book ai didi

android - 如何在 Android 中使用 sqlite 获取更新的行数?

转载 作者:行者123 更新时间:2023-11-30 00:50:01 25 4
gpt4 key购买 nike

我正在开发一个在 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/

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