在sqlite中使用int数组更新数据

时间:2017-05-09 08:27:23

标签: android android-studio android-sqlite

/*
<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});是错的呢? 我应该如何更改 句子

1 个答案:

答案 0 :(得分:0)

the last 2 parameters in update()whereClausewhereArgs,相当于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,这可能是错误的(对你而言)