2011-07-10 87 views
1

我不斷收到此錯誤將數據插入SQLite數據庫時出錯?

07-10 21:50:06.296:ERROR /數據庫(538):android.database.sqlite.SQLiteException:沒有這樣的表:任務:,在編譯:INSERT INTO任務(描述,時間,標題,日期,狀態)VALUES(?,?,?,?,?);

當我執行這行代碼。我是否以錯誤的方式插入?

private View.OnClickListener onSave = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    String type = null; 

    switch(status.getCheckedRadioButtonId()){ 
    case R.id.completed: 
     type = "completed"; 
     break; 
    case R.id.in_progress: 
     type="in-progress"; 
     break; 
    } 
    if(taskId == null){ 
     helper.insert(title.getText().toString(), descrip.getText().toString(), date.getText().toString(), time.getText().toString(), status.toString()); 
      Toast.makeText(getBaseContext(), "Task Saved", Toast.LENGTH_SHORT); 
    } 
    else{ 
     helper.update(taskId, title.getText().toString(), descrip.getText().toString(), date.getText().toString(), time.getText().toString(), type); 

    } 

    finish(); 

    } 
}; 

這裏是我的SQL數據庫插入方法:

class TaskHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "taskask.db"; 
private static final int SCHEMA_VERSION = 1; 

public TaskHelper(Context context){ 
    super(context, DATABASE_NAME, null, SCHEMA_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE reminders (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, descrip TEXT, date TEXT, time TEXT, type TEXT)"); 


} 


@Override 
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
    // TODO Auto-generated method stub 

} 

public Cursor getAll(){ 
    return(getReadableDatabase().rawQuery("SELECT _id, title, descrip, date, time, type FROM reminders ORDER BY title", null)); 

} 
public void insert(String title, String descrip, String date, String time, String status){ 
    ContentValues cv = new ContentValues(); 
    cv.put("title", title); 
    cv.put("descrip", descrip); 
    cv.put("date", date); 
    cv.put("time", time); 
    cv.put("status", status); 
    getWritableDatabase().insert("task", "name", cv); 
} 
public Cursor getById(String id){ 
    String [] args = {id}; 

    return(getReadableDatabase()  
      .rawQuery("SELECT _id, title, descrip, date, time, status FROM task WHERE _ID=?",args)); 


} 
public void update(String id, String title, String descrip, String date, String time, String type){ 
    ContentValues cv = new ContentValues(); 
    String [] args={id}; 
    cv.put("title", title); 
    cv.put("descrip", descrip); 
    cv.put("date", date); 
    cv.put("time", time); 
    cv.put("status", type); 
    getWritableDatabase().update("task", cv, "_ID=?", args); 


} 
public String getTitle(Cursor c){ 
    return(c.getString(2)); 
} 
public String getDescrip(Cursor c){ 
    return(c.getString(3)); 
} 
public String getDate(Cursor c){ 
    return(c.getString(4)); 

} 
public String getTime(Cursor c){ 
    return(c.getString(5)); 
} 
public String getStatus(Cursor c){ 
    return(c.getString(6)); 
} 

}

+0

你如何準備你的數據庫?你什麼時候創建表格?有沒有名爲「任務」的表?你是否在特殊的cataog中創建了表,並且沒有指定insert? – zoidbeck

+0

我剛剛用數據庫類更新了上面的問題。 – yoshi24

回答

0

你插入到表中的 「任務」,但您創建語句調用表 「提醒」。你的表名混合起來了嗎?

+0

我改變了它,仍然得到錯誤07-10 22:10:22.136:錯誤/數據庫(638):android.database.sqlite.SQLiteException:表提醒沒有列命名狀態:,而編譯時:INSERT INTO提醒(descrip ,時間,標題,日期,狀態)VALUES(?,?,?,?,?); – yoshi24

+2

你真的在閱讀這些錯誤信息嗎?您創建的表格沒有稱爲狀態的列。 –

0

您需要重新安裝應用程序才能使更改生效。刪除應用程序並重新安裝它,或者如果您只是繼續在現有的apk上運行,則數據庫將會啓動。

+0

仍然沒有工作..我仍然得到同樣的錯誤。 =( – yoshi24

+0

)如果您仍然得到完全相同的錯誤,這意味着您仍然沒有任務表。 – nahwarang