2014-02-14 83 views
0

下面是我的代碼更新記錄完成。Android sqlite更新沒有在表

try { 
       String str_edit = edit_note.getText().toString(); 
       Toast.makeText(getApplicationContext(), str_edit, 
         Toast.LENGTH_LONG).show(); 
            Toast.LENGTH_LONG).show(); 
     String  rawQuery="UPDATE " + GlobalVariable.getstr_tbl_name() 
         + " SET note = '" + str_edit + "' where name = '" 
         + str + "' "; 
       db.execSQL(rawQuery); 
      } catch (Exception e) { 
       System.out.println(e.getMessage()); 
      } 

代碼顯示:

try { 
      Cursor note_cursor = db.query(GlobalVariable.getstr_tbl_name(), 
        new String[] { "note" + " as note" }, "name" + "=?", 
        new String[] { GlobalVariable.getstr_food_name() }, null, 
        null, null); 
      if (note_cursor.moveToFirst()) { 
       int notecol = note_cursor.getColumnIndex("note"); 
       do { 
        String str = note_cursor.getString(notecol); 
        Toast.makeText(getApplicationContext(), str, 
          Toast.LENGTH_LONG).show(); 
        edit_note.setText(str); 
       } while (note_cursor.moveToNext()); 

      } 
     } 

     catch (Exception e) { 
      System.out.println(e.getMessage()); 

     } 

我得到的所有變量值,即全局變量和所有,但更新不反映在表中。 我做了什麼錯?

+0

請用db.execSQL()替換db.rawQuery()它可能會導致此錯誤 –

回答

1

,每當我們試圖更新我們的數據庫然後就乾淨,再卸載應用程序,然後安裝可能是當我們不卸載它,如果ü找到正確的然後告訴其他明智的,我們將看到未來

一些變化不會發生
0

應該 int notecol = note_cursor.getColumnIndex("name"); 改爲 int notecol = note_cursor.getColumnIndex("note");

,因爲在第一個代碼塊,您正在更新備註..

+0

不,那是我的錯誤..我顯示相同的... note .. bt不反光... :( – Android

+0

看到我的更新post – Android

+0

可能需要檢查數據庫中的sqlite name字段中是否有空格,如果需要修剪rawQuery中的sqlite名稱字段。 –

0

的問題是,您嘗試使用您的數據庫更新方法而不是execSqlRawQuery旨在從數據庫中檢索數據,而execSql讓你

執行一個SQL語句不是SELECT或返回數據的任何其他SQL語句。

您也可以考慮使用public int update (String table, ContentValues values, String whereClause, String[] whereArgs)方法。