/*
<Update total page>
work: Update total page
input: title, new total page
output: none
*/
public void update_tot_page(String str_title, int int_newPageTot) {
db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("page_total", int_newPageTot);
//error->
db.update("booklist", values, "page_total=?", new int[] {int_newPageTot});
//<-
}
我想在booklist
表中更新总页数。
我发现
db.update("booklist", values, "title=?", new String[]{str_title});
没有错。
那么,为什么db.update("booklist", values, "page_total=?", new int[] {int_newPageTot});
是错的呢?
我应该如何更改 句子?
答案 0 :(得分:0)
the last 2 parameters in update()
为whereClause
和whereArgs
,相当于where clause
,例如where id = 10
db.update("booklist", values, "title=?", new String[]{str_title});
以上是正确的,因为您为page_total
设置了新值,条件为where title=...
下面的一个不正确,因为在DB中找不到where page_total=newTotal
语法明智它是正确的,但它与db中的记录不匹配。或者它可以匹配一个总数=您要设置的新总数,但这可能不是您实际想要的记录,坚持title
或使用主键(ID)
db.update("booklist", values, "page_total=?", new int[] {int_newPageTot});
如果你真的想用page_total:where page_total=...
,你需要将currentTotal
作为param传递给函数并在update()
db.update("booklist", values, "page_total=?", new int[] {currentTotal});
但同样,这可能会更新2个或3个甚至更多记录,因为它们都有page_total
等于currentTotal
param,这可能是错误的(对你而言)