2015-04-02 81 views
0

我想添加或更新Android中的SQLite數據庫中的信息。 數據庫獲取課程筆記ID和學生ID。如果課文標識爲0,則會創建一個新條目。Android SQLite更新/插入數據不會工作

這裏是什麼在我的Dbhelper類(插入,更新是相當類似):

public boolean insertLessonNotes(LessonNotesData lData) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues lessonValues = new ContentValues(); 
    //values.put(LESSON_ID, lData.getLessonID()); // Lesson ID 
    //values.put(ST_ID, lData.getStudentID()); // Student ID 
    //values.put(LESSON_IMAGE_ID, lData.getImageID()); // Lesson Image ID 
    //values.put(LESSON_IMAGE_NOTE, lData.getImageNote()); // Note attached to image 
    lessonValues.put(LESSON_ID, lData.getLessonID()); 
    lessonValues.put(ST_ID, lData.getStudentID()); 
    lessonValues.put(DATE, lData.getDate()); // Date note added 
    lessonValues.put(LESSON_READING, lData.getReadingNote()); // reading notes 
    lessonValues.put(LESSON_PHONICS, lData.getPhonicsNote()); // phoncis notes 
    lessonValues.put(LESSON_SPELLING, lData.getSpellingNote()); // spelling notes 
    lessonValues.put(LESSON_WRITING, lData.getWritingNote()); // writing notes 
    lessonValues.put(LESSON_COMMENTS, lData.getCommetns()); // comments notes 
    lessonValues.put(LESSON_HOMEWORK, lData.getHomework()); // homework notes 
    // Inserting Row 
    db.insert(TABLE_LESSON_NOTES, null, lessonValues); 
    db.close(); 
    return true; 
} 

這是我lessonNotes類(其中輸入和保存的信息)

LessonNotesData lNote = new LessonNotesData(id_To_Update, student_id, lessonDate.getText().toString(), readNote.getText().toString(), phonNote.getText().toString(), spellNote.getText().toString(), writeNote.getText().toString(), commentNote.getText().toString(), homeworkNote.getText().toString()); 
    Bundle extras = getIntent().getExtras(); 
    int studentID = extras.getInt("studentId"); 
    int lessonID = extras.getInt("lessonID"); 
    Toast.makeText(getApplicationContext(), "LessonID is:(lessonNotes3) "+String.valueOf(lessonID), Toast.LENGTH_SHORT).show(); 
    Toast.makeText(getApplicationContext(), "StudentID is: (lessonNotes3) "+String.valueOf(studentID), Toast.LENGTH_SHORT).show(); 
    //Bundle studentId = getIntent().getExtras(); 
    if (lessonID != 0) { 
     if (studentID > 0) { 
      if (mydb.updateLessonNotes(lNote)) { 
       //Update was successful 
       Toast.makeText(getApplicationContext(), "Updated successfully", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(getApplicationContext(), com.example.ltss.dyslexia.app.LessonNotesList.class); 
       intent.putExtra("studentId",studentID); 
       startActivity(intent); 
      } else { 
       //Update did not complete correctly 
       Toast.makeText(getApplicationContext(), "Update unsuccessful, Please try again", Toast.LENGTH_SHORT).show(); 
      } 
     } else { 

      if (mydb.insertLessonNotes(lNote)) { 
       Toast.makeText(getApplicationContext(), "New Lesson note created", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(getApplicationContext(), "Error creating lesson note! Please try again", Toast.LENGTH_SHORT).show(); 
      } 
      //Return user to lessonNotesList where ListView should now show new lesson note 
      Intent intent = new Intent(getApplicationContext(), com.example.ltss.dyslexia.app.LessonNotesList.class); 
      intent.putExtra("studentId",studentID); 
      startActivity(intent); 
     } 
    } 

每當我嘗試添加或更新系統中的任何東西,我得到這個從調試日誌:

04-02 20:02:33.925 26789-26789/com.example.ltssdyslexiaapp D/Items to add:﹕ [email protected] 

關於這是什麼或我如何解決它的任何想法?

感謝

+0

如果**總是返回true **,那麼**布爾**函數的用途是什麼?你可以發佈你的'表格創建'代碼嗎? – 2015-04-03 07:55:48

回答

0

其實它不是在所有它只是一個Log輸出錯誤,它是一個DEBUG類型的日誌。你colud嘗試登錄相同的添加行android.util.Log.d(「hello」,「world」);到任何你想要的方法。而'[email protected]'表示LessonNotesData沒有toString()方法,這就是爲什麼你看到@ 42602bf8 - 它是一個在內存或散列中的實例地址。

+0

是的,我知道這是一個日誌:) 我不知道爲什麼它打印出來的消息調試日誌,當我還沒有實際得到我的代碼中的日誌語句打印出'項目添加... ' 另外,我仍然不知道爲什麼它不會將信息添加到系統中?任何想法,我可能做錯了什麼? – ShWhite 2015-04-02 21:56:46

+0

也許該日誌輸出來自您在項目中使用的某個第三方庫。你這個輸出不一定是由SQLite產生的,也可能是在把對象保存到數據庫的時候產生的。它可以來自任何Collection類(如果使用Guava?),或者來自某個ListView,如果您使用的是新的gogle的RecyclerView。您也可以在AS/IDEA項目的根文件夾中執行整個項目搜索:Ctrl + Shift + F - 您是否以這種方式搜索Log.d? – Stan 2015-04-06 09:35:01

+0

另外,如果你正在使用Loaders從DB獲取數據到ListView中,這個輸出可能來自那裏,因爲你在DB Loader中添加一條新記錄可能會自動更新以將已存儲的項添加到列表/遊標中。 – Stan 2015-04-06 09:48:36