今天在APP中增加一個添加項目的功能,項目的主鍵為整數,要讓它自增長。
既然要自增長,那么在代碼里面就不用給id字段賦值。但是調試的時候發現不行,提示主鍵重復,觀察了輸出,不賦值的話,id默認為0,于是每次都為0,就重復了:
Source source = new Source(); source.setName(dict.getName());//id沒有賦值 SourceManager.get(this).insert(source);
ContentValues cv = new ContentValues(); System.out.println("id: " + source.getId());//輸出,id每次都是0 cv.put(COLUMN_ID, source.getId()); cv.put(COLUMN_NAME, source.getName()); id沒有賦值,為什么是0呢?那就是Java的默認int為0了,所以,在對象層面,就算不賦值,id也默認是0。
因此,要從數據庫操作層面來解決:
//cv.put(COLUMN_ID, source.getId()); v.put(COLUMN_NAME, source.getName());
ContentValue賦值時取消對id字段的賦值即可。
問題解決,可以自增長了。
總結
Android中,讓sqlite主鍵自增長的條件如下:
1. 數據庫中,設置字段為INTEGER,Primary,Autoincrement。
2. Java代碼中,ContentValue賦值時忽略主鍵字段。
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。
新聞熱點
疑難解答