2010-08-25 109 views
0

我米試圖刪除通過Android應用程序一個SQLiteDB的記錄,這是我使用的代碼刪除的記錄安卓:SQLite的無法刪除特定的記錄

 
//Snippet of code in my DBAdapter Class 

public boolean DeleteRecord(String ContactName) { 

    Log.i(TAG, "DeleteRecord(String ContactName)"); 
    Log.i(TAG, ContactName); 
    return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME + "=" 
      +ContactName,null); 
    } 

,並從道路另一個類,我試圖調用打開數據庫,並調用此方法,並再次關閉DB這種方法,這是多麼我已經編碼,

//代碼片段在我DBApplication類

 
public void onClick(DialogInterface dialog, 
    int which) { 
DBAdapter.open(); 
DBAdapter.DeleteRecord(DeleteRecord); 
//DeletRecord is string value that in DB(Sivaram)      
DBAdapter.close(); 
} 

當我部署它,我一收到以下錯誤,

 
08-25 14:52:20.602: ERROR/AndroidRuntime(231): android.database.sqlite.SQLiteException: no such column: Sivaram: , while compiling: DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram 

請幫助我,找到了解決辦法提前

謝謝...

+2

這真的是社區wiki的價值嗎? – WarrenFaith 2010-08-25 10:53:13

回答

8
Edit- 

試試這個,CHK如果它工作第一

return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME + "='"+ContactName+"'",null); 

在這裏你的字符串應該是在你的where子句(第3位),你只需要到提到你的表名作爲你的第二個參數,我相信

delete(String tableName, String whereClause, String[] whereArgs) {} 
return db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME,new String[]{ContactName}); 
+0

謝謝Rahul,你的努力幫了我很多,現在它工作正常,謝謝你的支持.... – 2010-08-25 10:31:56

5

我想你已經通過了錯誤查詢如

DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram; 

它必須是這樣的。

DELETE FROM SimpleTable1 WHERE Employee_Name='Sivaram'; 

檢查它。 ''是必須爲Text數據類型

+0

@Nandagopal T:使用位置參數('從DELETE FROM SimpleTable1 WHERE Employee_Name =?')是避免犯這個錯誤的好方法。 – CommonsWare 2010-08-25 09:43:02

+0

嗨,大家好,非常感謝您的大力響應,但你可以請告訴我如何使用你的想法在我的例子,因爲我嘗試使用 db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME +「=」 \t \t \t \t +' ContactName',null); ,這樣我試圖使用,它顯示我的錯誤爲無效的字符常量....請幫我... – 2010-08-25 10:12:28

+0

單引號應該在雙引號內:db.delete(TABLE_SIMPLETABLE_CLIENT1,KEY_EMPLOYEE_NAME +「=' 「+ ContactName +」'「,null) – Intrications 2010-08-30 10:24:49

0

你可以寫下面查詢由paasing的數據字符串,刪除記錄,並基於u可以從表中刪除記錄在數據庫

// delete a title by string name specified 
public Cursor deleteTitle(String i) 
{ 
    return db.query(true, DATABASE_TABLE, new String[] { Key_RowID }, 
     Key_Name + "= ?", new String[] { Key_Name.toString() }, null, null, 
     null, null); 
} 

與qyery的問題,就是你還沒有轉換您的姓名字段數據庫字符串即KEY_NAME。的toString()

嘗試了這一點,這可能有助於

0
public boolean deletename(String rowid) { 
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowid, null) > 0; 
} 

試試這個代碼其工作對我罰款。它使用唯一的行ID刪除記錄。行是我的主鍵。

現在如果你想刪除使用任何以外的rowid。

試試這個

public boolean deletename(String eid) { 
    getrowid(eid); 
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + zCursor.getString(0).toString(), null) > 0; 
} 
public Cursor getrowid(String e_id) throws SQLException { 
    //System.out 
    // .println("---------------================Employee ID:" + e_id); 
    zCursor = db.query(true, DATABASE_TABLE, new String[] { KEY_ROWID }, 
    KEY_EID + "= ?", new String[] { e_id.toString() }, null, null, 
    null, null); 
    if (zCursor != null) { 
    zCursor.moveToFirst(); 
    //System.out.println("---------------================" 
    // + zCursor.getString(0)); 
    } 
    return zCursor; 
} 

這裏我使用的是僱員刪除我的員工記錄。所以我找到了獨特的rowid,這是我給定記錄的主鍵,然後刪除記錄。

+0

謝謝你,我的工作也很棒,因爲你的迴應...很多... – 2010-08-25 11:19:11