2013-01-13 126 views
1

我遇到了一個問題,其中項目插入到我的數據庫兩次。我沒有2插入語句。SQLite插入數據兩次

我想檢查一個數組的元素是否爲空。

這裏是我的代碼

片段在我的主要活動

private String[] dateTimeDispStr= new String[2]; 
中的onCreate

dateTimeDispStr[0]=null; 
dateTimeDispStr[1]=null; 

同一活動的其他部分:

//-------------------------------------------update time----------------------------------------//  
public void updatetime() 
{ 
    dateTimeDispStr[0]=new StringBuilder() 
    .append(pad(mhour)).append(":") 
    .append(pad(mminute)).toString(); 

    tdv.editRow(this, dateTimeDispStr); 
    if(dateTimeDispStr[1]!=null){ 
     update(); 
    } 

} 

//-------------------------------------------update date----------------------------------------//  
private void updateDate() { 
    dateTimeDispStr[1]=new StringBuilder() 
    // Month is 0 based so add 1 
    .append(mMonth + 1).append("/") 
    .append(mDay).append("/") 
    .append(mYear).append(" ").toString(); 

    tdv.editRow(this, dateTimeDispStr); 
    if(dateTimeDispStr[0]!=null){ 
     update(); 
    } 

} 


SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:MM"); 

public void update(){ 
    Calendar cal = Calendar.getInstance(); 
    cal.set(mYear, mMonth + 1, mDay, mhour, mminute, 0); 
    String date = formatter.format(cal.getTime()); 

    tdi.setDate(date.split(" ")); // split makes an array of ["date", "time"] 
    db.addItem(tdi); 
    Log.d("Item set in the db", "The item: " + date); 
} 

這裏我的數據庫哈ndler

// Adding new ToDoItem 
public void addItem(ToDoItem item) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_TASK, item.getTDItem()); // item task 
     values.put(KEY_DATE, item.getDate()); // item date 
     values.put(KEY_PRIORITY, item.getPriority()); // item priority 

     // Inserting Row 
     db.insert(TABLE_TDL, null, values); 
     db.close(); // Closing database connection 
    } 

tdv.editRow在正在擴展表格佈局的UI上編輯該行。我將添加在一秒內檢查null的功能。它基本上追加已經有待辦事項的任務的行,但與日期和時間我想將它們添加到該行

據我所知,我在這兩種方法調用更新,但那是因爲如果用戶先點擊任一按鈕。

+0

爲什麼不使用db.update()如果你想更新... –

+0

你是否曾經重置'dateTimeDispStr'?否則,數據將在第一次插入後插入兩次。 – Sam

+0

基本上我想添加一個新的條目,當我有我的項目的時間和日期 – Vnge

回答

1

相反的一切,我只想取一個日曆實例,用你的日期/時間變量填充它,並使用日期格式建立一個本地化的字符串。

本身試試這個update()

// Create a field variable 
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm"); // HH for 24hr 

public void update(){ 
    Calendar cal = Calendar.getInstance(); 
    cal.set(mYear, mMonth + 1, mDay, mhour, mminute, 0); 
    String date = formatter.format(cal.getTime()); 

    tdi.setDate(date.split(" ")); // split makes an array of ["date", "time"] 
    db.addItem(tdi); 
    Log.d("Item set in the db", "The item: " + date); 
} 

(我沒有在時刻工作的編譯器所以請原諒任何微小瑕疵...)閱讀定製的SimpleDateFormat字符串here

+0

我會試試看 – Vnge

+0

當我更改日期和時間,我該字段顯示應該

+0

以及db的兩個條目,一個是時間和日期,另一個是兩個 – Vnge

0

是的,您沒有2個插入語句,但您要調用addItem()方法兩次。

可以說你需要更新的日期和時間..從您的代碼 當你更新時間..你調用更新()方法,它調用了的addItem()方法插入該項目到數據庫。接下來,在更新同一項目的日期時,您再次調用更新() ,它調用addItem()方法,該方法將該項目再次插入數據庫。

希望這是有幫助的