удалить одну строку из базы данных - PullRequest
0 голосов
/ 28 января 2011

У меня проблемы с удалением только одной строки. Я могу вставить и удалить всю таблицу. Я не могу понять весь идентификатор, чтобы удалить только одну строку, я смотрел на некоторые примеры, которые я не мог получить. Это сводит меня с ума, Любая помощь будет очень цениться Вот класс sqlite;

public class datahelper {
   private static final String DATABASE_NAME = "table.db";
   private static final int DATABASE_VERSION = 1;
   private static final String TABLE_NAME = "table1";

   private Context context;
   private SQLiteDatabase db;
   private SQLiteStatement insertStmt;

   private static final String INSERT =
      "insert into " + TABLE_NAME + "(name) values (?)";

   public datahelper(Context context) {
      this.context = context;
      OpenHelper openHelper = new OpenHelper(this.context);
      this.db = openHelper.getWritableDatabase();
      this.insertStmt = this.db.compileStatement(INSERT);
   }

   public long insert(String name) {
      this.insertStmt.bindString(1, name);
      return this.insertStmt.executeInsert();
   }

   public long insert2(String name) {
          this.insertStmt2.bindString(1, name);
          return this.insertStmt2.executeInsert();
   }

   public void deleteAll() {
      this.db.delete(TABLE_NAME, null, null);
   }

   private static class OpenHelper extends SQLiteOpenHelper {
      OpenHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }

      @Override
      public void onCreate(SQLiteDatabase db) {
         db.execSQL("CREATE TABLE " + TABLE_NAME +
                    " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
   }
}

Ответы [ 2 ]

5 голосов
/ 28 января 2011

Выполнить запрос

DELETE FROM TABLE_NAME WHERE id = SOMEVALUE
4 голосов
/ 28 января 2011

РЕДАКТИРОВАТЬ: Судя по вашим отзывам, вы используете этот API , который обеспечивает этот метод удаления . Я думаю, что вы бы сделали это:

public void delete(int id) {
    this.db.delete(TABLE_NAME, 'id = ?', new String[] { id.toString() });
}

(Оригинальный ответ ...)

Используйте инструкцию DELETE с предложением WHERE, которая удаляет только строку с идентификатором, который вы хотите удалить:

DELETE FROM <tablename> WHERE id = ?

Конечно, вам нужно знать идентификатор, чтобы сделать это. SQLite предоставляет функцию - sqlite3_last_insert_rowid () -, которую можно вызывать сразу после вставки. Если ваш API не предоставляет эту функцию напрямую, вы можете получить ее косвенно через эквивалентную функцию SQL :

SELECT last_insert_rowid()

Алеративно, если вы хотите удалить определенное имя (при условии, что оно уникально):

DELETE FROM <tablename> WHERE name = ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...