2011-08-21 40 views
0

插入值我是新android開發,我有一個Android的數據庫表下面的代碼SQLiteConstraintException上表

公共類SoftCopyDatabase擴展SQLiteOpenHelper {

private static final String DATABASE_NAME = "SoftCopy.db"; 
private static final int DATABASE_VERSION = 1; 

public SoftCopyDatabase(Context ctx) { 
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID 
      + " INTEGER PRIMARY KEY AUTOINCREMENT, " + SUBJECT 
      + " TEXT NOT NULL," + TOPIC + " TEXT NOT NULL, " 
      + LECTURENUMBER + " TEXT NOT NULL, " + PAGENUMBER 
      + " TEXT NOT NULL, " + DATE + " TEXT NOT NULL, " + _DATA 
      + " TEXT NOT NULL);"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    onCreate(db); 
}} 

我想加入到這個表使用該方法ADDINFO(),它是如下:

private void addInfo(){ 
    ContentValues values = new ContentValues(); 
    values.put(SUBJECT, SaveData._subject); 
    values.put(TOPIC, SaveData._topic); 
    values.put(LECTURENUMBER, SaveData._lecturenumber); 
    values.put(PAGENUMBER, Integer.toString(PAGE_NUMBER)); 
    values.put(DATE, SaveData._date); 
    values.put(_DATA, SaveData.FILE_NAME + ".png"); 
    softCopyDB.getWritableDatabase().insertOrThrow(TABLE_NAME, null, values); 

} 

但是,當我增加PAGE_NUMBER的值(PAGE_NUMBER是整數),同時保持人l其他條目相同並調用addInfo(),我在 處收到錯誤softCopyDB.getWritableDatabase()。insertOrThrow(TABLE_NAME,null,values);

其是如下

08-21 18:16:11.216:ERROR/AndroidRuntime(329):android.database.sqlite.SQLiteConstraintException:錯誤代碼19:致約束失敗 08-21 18 :16:11.216:錯誤/ AndroidRuntime(329):在android.database.sqlite.SQLiteStatement.native_execute(本機方法) 08 - 21 18:16:11.216:錯誤/ AndroidRuntime(329):在android.database.sqlite。 SQLiteStatement.execute(SQLiteStatement.java:55) 08-21 18:16:11.216:錯誤/ AndroidRuntime(329):at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549) 08-21 18: 16:11.216:錯誤/ AndroidRuntime(329):在android.database.sqlite.SQLiteDat abase.insertOrThrow(SQLiteDatabase.java:1432) 08-21 18:16:11.216:ERROR/AndroidRuntime(329):在neduet.telecom.softcopy.surface.LectureNoting.addInfo(LectureNoting.java:161)

請幫我排序。

回答

0

我能看到的唯一約束是PK和NOT NULL。由於_ID不是你插入的一部分,我會檢查你的文本值爲null。

+0

請詳細說明您的答案。 –

+0

所有列都標記爲NOT NULL,因此請檢查'values'對象中的所有對象是否都爲空。 – dmon