Android: SQLite Не удается удалить конкретную запись - PullRequest
0 голосов
/ 25 августа 2010

Я пытаюсь удалить запись из SQLiteDB через приложение для Android. Это способ, которым я использовал код для удаления записи

//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);
    }

и из другого класса, я пытаюсь вызвать этометод, открывая БД и вызывая этот метод и снова закрывая БД, вот как я кодировал,

// Фрагмент кода в моем классе 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

, пожалуйста, помогите мне, в поиске решения

Заранее спасибо ...

Ответы [ 4 ]

8 голосов
/ 25 августа 2010
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});
5 голосов
/ 25 августа 2010

Я думаю, что вы передали неправильный запрос. Как и

DELETE FROM SimpleTable1 WHERE Employee_Name=Sivaram;

, это должно быть так.

DELETE FROM SimpleTable1 WHERE Employee_Name='Sivaram';

проверьте его.'' является обязательным для Text типа данных

0 голосов
/ 25 августа 2010
public boolean deletename(String rowid) {
  return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowid, null) > 0;
}

Попробуйте этот код, он работает нормально для меня.Удаляет записи, используя уникальный идентификатор строки.где row - мой первичный ключ.

теперь, если вы хотите удалить, используя любой, кроме 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;
 }

здесь я удаляю свои записи сотрудников, используя employeeid.поэтому я нахожу уникальный rowid, который является моим основным ключом для данной записи, а затем удаляю запись.

0 голосов
/ 25 августа 2010

вы можете написать приведенный ниже запрос для удаления записи, поставив данные в виде строки и основываясь на этом, вы можете удалить запись из таблицы в базе данных

// 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 ()

Попробуйте, это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...