2015-11-22 28 views
0

我正在通過傳遞用戶名作爲參數來從我的SQLite數據庫中刪除特定的行。
現在,這是發生了什麼。通過傳遞用戶名從SQLite數據庫中刪除一行?

如果我傳遞行ID,一切工作正常,但是當我通過KEY_Name = username時,沒有任何反應。

所以,我現在很困惑。
任何人都可以建議我爲什麼這個錯誤出現?
我的更新按鈕發生同樣的問題。

public void deleteUser(String userName) 
     { 
      try 
      { 
       SQLiteDatabase db = helper.getWritableDatabase(); 
       db.delete(DATABASE_TABLE, KEY_NAME + "=" + userName,null); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 

case R.id.button4: 

       String sr = t7.getText().toString(); 

       Electronicscheckout exht = new Electronicscheckout(this); 
       try { 
        exht.open(); 
        exht.delete(sr); 
        exht.close(); 
       } catch (SQLException e) { 
        Dialog d = new Dialog(this); 
        d.setTitle("Dang"); 
        TextView tv = new TextView(this); 
        tv.setText("error"); 
        d.setContentView(tv); 
        d.show(); 
       } 
       break; 

,真正讓我驚訝的是,下面的代碼工作,如果我行ID作爲參數傳遞如下的事情: -

public void deleteUser(Long id) 
     { 
      try 
      { 
       SQLiteDatabase db = helper.getWritableDatabase(); 
       db.delete(DATABASE_TABLE, KEY_ROWID + "=" + id,null); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
+0

@ FrankN.Stein: - 我不明白你。你可以解釋一下嗎? – Raj

+1

查看我的回答... –

回答

2

username字符串。因此,您必須使用string delimiter')將其包圍。

所以:

db.delete(DATABASE_TABLE, KEY_NAME + "= '" + userName + "'",null); 

或(更好)使用約束參數

所以:

db.delete(DATABASE_TABLE, KEY_NAME + "= ?", new String[]{userName}); 

在這種情況下,機器人本身處理字符串得當,所以你不必添加字符串分隔符。

+1

N斯坦因: - 非常感謝您的幫助。有效 – Raj