2011-07-19 4 views
0

にエントリを作成するときに、私はここでは、このエラーにエラーSQLdatabase

07-19 14:24:50.840: ERROR/AndroidRuntime(1512): java.lang.NullPointerException 
07-19 14:24:50.840: ERROR/AndroidRuntime(1512):  at com.fttech.organizeit.TaskHelper.createLunch(TaskHelper.java:76) 


07-19 14:24:50.840: ERROR/AndroidRuntime(1512):  at com.fttech.organizeit.TaskDetails.saveState(TaskDetails.java:260) 

を得続けるには、(私のcreateLunchです)

} 
    public long createTask(String title, String descrip, String type, String taskdatetime){ 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_TITLE, title); 
     initialValues.put(KEY_DESCRIP, descrip); 
     initialValues.put(KEY_TYPE, type); 
     initialValues.put(KEY_DATE_TIME, taskdatetime); 

     return mDb.insert(DATABASE_TABLE, null, initialValues); 
    } 

それは私にステートセーブので、イムかなり確信してエラー嘘前createLunchでエラーが発生しますここに。私の帰りの声明に私を指している。私はちょうど問題が何であるか見ていない。

ここに保存されているlob.vが表示されます。データベースには挿入されません。私は、エラーコード飛び出しMDBオブジェクトであるだけだから}ここ

Log.v(title, "saved"); 

    SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT); 
    String taskdatetime = dateTimeFormat.format(mCalendar.getTime()); 
    if(taskId == null){ 
     long id = helper.createTask(title, descrip, type, taskdatetime); 
     Log.v(taskdatetime, "Inserted into databse"); 
     if(id >0){ 
      taskId = id; 
     } 
    } 
    else{ 
     helper.updateTask(taskId, title, descrip, type, taskdatetime); 
    } 

    finish(); 


} 

public void fillData(){ 
      helper.open(); 
      Cursor task = helper.fetchAllTask(); 
      startManagingCursor(task); 

      String[] from = new String[]{TaskHelper.KEY_TITLE}; 
      int[] to = new int[]{R.layout.row}; 

      SimpleCursorAdapter taskAdapter = new SimpleCursorAdapter(this, R.layout.list, task, from , to); 
      setListAdapter(taskAdapter); 

     } 

答えて

1

は、あなたのMDBのヌルですか?あなたのIDとして-1

public long createTask(String title, String descrip, String type, String taskdatetime){ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_TITLE, title); 
    initialValues.put(KEY_DESCRIP, descrip); 
    initialValues.put(KEY_TYPE, type); 
    initialValues.put(KEY_DATE_TIME, taskdatetime); 

    long lResult=-1; 
    if(mDB!=null) 
    lResult = mDb.insert(DATABASE_TABLE, null, initialValues); 
    } 

    return lResult; 
} 

UPDATE

返している場合は、これを試してみて、見あなたはSQLiteOpenHelperを拡張する必要がありますあなたのDatabaseHelperクラスのgetWriteableDatabaseメソッドを呼び出すことで、データベースを開く必要があります。

mDB = myDataBaseHelper.getWritableDatabase() 
あなたはcreateTask

にあなたの呼び出しの結果を確認する必要があります

if(id >0){ 
     Log.v(taskdatetime, "Inserted into databse"); 
     taskId = id; 
    } 
    else 
    { 
     Log.v(taskdatetime, "Insert failed"); 
    } 
+0

これは動作しますが、その保存した後に、それは私のリストに移入されませんか? – yoshi24

+0

これは、データベースを開いていないことを意味します。 – Merlin

+1

私は質問の一番下にコードスニペットを掲載しました。私のfilldataメソッドで私はそこにデータベースを開いた。それは私のリストを埋める方法です – yoshi24

1

ヨシ、

をあると思います。クラスのどこか他の場所に宣言しましたか?そうでなければ、それはあなたの問題です。もしそうなら76行目です。それを投稿できますか?

必要な場合。ここでMDBを宣言するコードの抜粋だ:

private static class DatabaseHelper extends SQLiteOpenHelper{ 
     DatabaseHelper (Context context) { 
      super(context, DBConstants.DATABASE_NAME, null, DBConstants.DATABASE_VERSION); 
     } 
     @Override 
     public void onCreate(SQLiteDatabase db) 
     { 
      //db.execSQL(DBConstants.TABLE_CREATE); 
     } 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVerison) 
     { 
      //db.execSQL(DATABASE_UPGRADE); 

     } 
    } 

//Open the data base. It will either create or upgrade the database 
public DbAdpt open() throws android.database.SQLException { 
    mDbHelper = new DatabaseHelper(mCtx); 
    mDb = mDbHelper.getWritableDatabase(); 
    return this; 
} 

・ホープ、このことができます、 ジョージ

関連する問題