2011-07-10 21 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

どのようにデータベースを準備していますか?あなたはいつテーブルを作成しますか? 「タスク」というテーブルがありますか?特別なカタロギの中にテーブルを作成しましたが、挿入物に指定されていませんか? – zoidbeck

+0

私はdatabseクラスで上記の質問を更新しました。 – yoshi24

答えて

0

あなたがテーブル "タスク" に挿入しているが、あなたの作成文は、表 "リマインダー" を呼び出します。あなたのテーブル名は混ざりましたか?

+0

これを変更しても、エラーが発生します。07-10 22:10:22.136:ERROR/Database(638):android.database.sqlite.SQLiteException:テーブルリマインダーにstatusという名前の列がありません:コンパイル時にINSERT INTOリマインダー、時間、タイトル、日付、ステータス)VALUES(?、?、?、?、?); – yoshi24

+2

これらのエラーメッセージは実際に読んでいますか?作成された表には、statusという列はありません。まだ動作していない –

0

変更を有効にするには、アプリを再インストールする必要があります。アプリを削除して再インストールすると、既存のapkで動かし続けるだけであれば、dbは存続します。

+0

..私はまだ同じエラーが発生します。 =( – yoshi24

+0

まだまったく同じエラーが発生している場合、これはまだタスクテーブルがないことを意味します。 – nahwarang

関連する問題