我正在使用android中的sqlite数据库开发一个应用程序。 这是我的表DDL代码。
c = 0b11101111010111
这是我的更新sql代码。
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" +
")");
当然,我可以使用update()和changes()函数。 但我想使用execSQL()函数。
我可以使用execSQL()函数获取更新行的数量吗?
答案 0 :(得分:2)
在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);
答案 1 :(得分:-1)
public int getSingleRow(String food_name){
SQLiteDatabase myDb = getReadableDatabase();
Cursor cursor = null;
int value=0;
try{
cursor = myDb.rawQuery("SELECT quantity FROM table_food_palate WHERE name=?",new String[]{food_name});
if (cursor.getCount() >0){
cursor.moveToFirst();
value = Integer.parseInt(cursor.getString(cursor.getColumnIndex("id")));
//id stands for the column name called id
Log.e("TAG","Value has been saved");
}
return value;
} finally {
cursor.close();
myDb.close();
}
}
那应该给你刚刚更新的行的id