2013-01-13 124 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()方法,该方法将该项目再次插入数据库。

希望这是有帮助的