2012-12-05 18 views
2

我現在確定我在做什麼錯,因爲java和SQLite對我來說是新的。所以我需要檢查用戶輸入新數據到數據庫時是否存在需要更新的「day」和「week_type」數據,否則創建新行。Android:SQLite檢查數據是否存在並更新

    public long creatEntry(int day2, int week_type2, 
       String desc2, String place2, String lessnum2) { 
      // TODO Auto-generated method stub 

      ContentValues cv = new ContentValues() ;  
      String update = "SELECT * FROM info WHERE day="+day2+" AND week_type="+week_type; 
      Cursor cr = ourDatabase.rawQuery(update, null); 
      if(cr!= null){ 
       cv.put(day, day2); 
       cv.put(week_type, week_type2); 
       cv.put(desc, desc2); 
       cv.put(place, place2); 
       cv.put(lessnum, lessnum2); 
       return ourDatabase.update(DATABASE_TABLE,cv, day+ "=" +day2+ " AND "+week_type+ "=" +week_type2, null); 
      } 
      else{ 

      cv.put(day, day2); 
      cv.put(week_type, week_type2); 
      cv.put(desc, desc2); 
      cv.put(place, place2); 
      cv.put(lessnum, lessnum2); 
      return ourDatabase.insert(DATABASE_TABLE, null, cv); 
      } 
     } 

回答

0

使用替換。它會嘗試首先插入,如果由於關鍵約束而發生衝突,它將刪除並插入這些值。在你的情況下,這兩列必須是unique。檢查出來:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#replace(java.lang.String, java.lang.String, android.content.ContentValues)

+0

而如果我想使用更新方法? – CVS

+0

多一個,如果哪些列是平等的,則替換更改? – CVS

+0

檢查這些鏈接: http://www.sqlite.org/lang_replace.html http://www.sqlite.org/lang_conflict.html –

相關問題