2012-08-12 6 views
0

행을 사용할 수있는 경우 삽입 방법을 사용하고, 그렇지 않으면 새로 만들려고 시도하거나 사용 가능한 경우 업데이트합니다. 그러나이 메서드는 내게는 else 부분을 제외하고는, 여기 내 방법android.database.sqlite.SQLiteConstraintException을 수정할 수 없습니다.

public long SetSettings(String whichCol, String value) { 
     // TODO Auto-generated method stub 
     preferences = ourcontext.getSharedPreferences(filenames, 0); 
     String[] colum = new String[] { KEY_CAR }; 
     Cursor c = ourDB.query(DBhelper.DATABASE_SETTINGSTABLE, colum, KEY_CAR 
       + "=" + "'" + preferences.getString("selectedcar", "") + "'", 
       null, null, null, null); 
     ContentValues cvedit = new ContentValues(); 
     cvedit.put(KEY_CAR, preferences.getString("selectedcar", "")); 
     cvedit.put(whichCol, value); 
     if (c.getCount() > 0) { 

      return ourDB.update(
        DBhelper.DATABASE_SETTINGSTABLE, 
        cvedit, 
        KEY_CAR + "=" + "'" 
          + preferences.getString("selectedcar", ""), null); 

     } else { 

      return ourDB.insert(DBhelper.DATABASE_SETTINGSTABLE, null, cvedit); 

     } 
    } 

이며, 이것은 내가 내 데이터베이스를 생성하는 방법이다 : 내 문제가 어디 있는지 파악하지 못할

public static final String KEY_ID = "_id"; 
public static final String KEY_CAR = "car"; 
public static final String KEY_SET_DISENTRY_MODE = "ditance_entry_mode"; 
     public static final String KEY_SET_DISUNIT = "distance_unit"; 
     public static final String KEY_SET_PETROLUNIT = "petrol_unit"; 
     public static final String KEY_SET_CONDISPLAY = "consumption_display"; 
     public static final String KEY_SET_DATEFORMAT = "date_format"; 
     public static final String KEY_SET_CURRENCY = "currency"; 
     public static final String KEY_SET_STOREFILLLOC = "store_fillloc"; 
     public static final String KEY_SET_GPSPIN = "gps_pin"; 
     public static final String KEY_SET_KEYCLICK = "keyboard_click"; 
     public static final String KEY_SET_KEYVIBRATE = "keyboard_vibrate"; 
     public static final String KEY_SET_BACKUP = "backup"; 

@Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 

     db.execSQL("CREATE TABLE " + DATABASE_SETTINGSTABLE + " (" + KEY_ID 
       + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_CAR 
       + " TEXT NOT NULL, " + KEY_SET_DISENTRY_MODE + " TEXT, " 
       + KEY_SET_DISUNIT + " TEXT, " + KEY_SET_PETROLUNIT + " TEXT, " 
       + KEY_SET_CONDISPLAY + " TEXT, " + KEY_SET_DATEFORMAT 
       + " TEXT, " + KEY_SET_CURRENCY + " TEXT, " 
       + KEY_SET_STOREFILLLOC + " TEXT, " + KEY_SET_GPSPIN + " TEXT, " 
       + KEY_SET_KEYCLICK + " TEXT, " + KEY_SET_KEYVIBRATE + " TEXT, " 
       + KEY_SET_BACKUP + " TEXT NOT NULL);"); 

    } 

, 어떤 도움을?

답변

2

당신은 내가 그것을 가지고, 제약 KEY_SET_BACKUP TEXT NOT NULL을 가지고 있지만이 값으로 null을 전달하는 업데이트 할 때, 그래서 contentvalues ​​너무 선 아래

cvedit.put(KEY_SET_BACKUP,""); 
+0

감사를 추가 :) – Reyjohn

관련 문제