2017-08-06 36 views
0

我試圖創建一個擁有3條信息 -name 一分錢一分貨 -comment 所以我在databasehelper加入新行的sqlite

 public boolean insertDataToHeader(String name,String money,String comment){ 

    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_H0,name); 
    contentValues.put(COL_H1,money); 
    contentValues.put(COL_H2,comment); 

    long result = db.insert(HEADERS, null, contentValues); 

    if (result == -1) 
     return false; 
    else 
     return true; 
} 

和調用方法創造了這個方法數據庫在活動

public void addHeaderToDatabase(){ 
    addButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      moneyS=money.getText().toString(); 
      isInserted=MainActivity.moneyDB.insertDataToHeader(title.getText().toString(),moneyS,comment.getText().toString()); 
      backToMain(isInserted); 

     } 
    }); 

} 

當我適當加兩排-name一分錢一分貨,例如,它的作品,但是當我添加第三個它不是與該方法返回false,這意味着該數據沒有得到一個dded。 這使我想,sqlit數據庫中的行數是否有限? **注** 呼叫在AddActivity不是在MainActivity和方法backToMain(isInserted); 返回如果數據HVE插入

+0

如果添加第三列註釋您創建的DB嘗試清除應用數據,並重新運行程序後...沒有有行 –

+0

沒有數量有限的我試過很多次+我完全移除該應用程序並重新安裝它和相同的問題:/ –

+1

用'insertOrThrow()'替換'insert()',以便得到一個有用的錯誤信息。 –

回答

0

註釋字符串可能爲空和列設置NOT NULL在MainActivity,從而插入失敗。解決方法是在傳遞給函數insertDataToHeader之前檢查null。

public void onClick(View v) { 
     moneyS=money.getText().toString(); 
     String commentS; 

      if ((comment.getText().toString()==null)){ 
       commentS=" "; 
      else { 
       commentS=comment.getText().toString();  
      } 

      isInserted=MainActivity.moneyDB.insertDataToHeader(title.getText().toString(),moneyS, commentS); 
      backToMain(isInserted); 

     }