дублирование данных в sqlite с приложением для Android - PullRequest
0 голосов
/ 20 января 2012

Я получаю информацию от пользователя в базе данных sqlite.Но когда я вставляю ту же запись, которая уже есть в базе данных, она добавляется снова.как я могу остановить дублирование записи в sqlite.Я разрабатываю это в Android.Я использую номер мобильного телефона в качестве первичного ключа.еще добавить эту запись в базу данных.Пожалуйста, предложите мне соответствующие решения.Спасибо заранее.

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Помните об ограничениях REPLACE или INSERT OR REPLACE, так как они будут перезаписывать любые пользовательские данные, добавленные пользователем вашего приложения в эти строки в базе данных - они не так продвинуты, как UPSERT в других базах данных SQL.* Как упоминалось в предыдущем посте, вам действительно нужно определить, какой может быть первичный ключ, и использовать эту информацию для обновления старых данных или удаления старой строки перед вставкой новой.

Если это невозможнотогда вы всегда можете DELETE FROM my_table или DROP my_table перед запуском вставок, чтобы не было дубликатов.Это (к лучшему или к худшему) также гарантирует, что данные, отсутствующие при новом импорте, не останутся в вашем приложении.

0 голосов
/ 20 января 2012

Использовать ключевое слово REPLACE INTO:

REPLACE INTO my_table (pk_id, col1) VALUES (5, '123');

Это автоматически идентифицирует первичный ключ и находит соответствующую строку для обновления, вставляя новый, если ничего не найдено.

0 голосов
/ 20 января 2012

убедитесь, что вы указали номер телефона в качестве первичного ключа во время создания таблицы.

, например:

String query = "CREATE TABLE IF NOT EXISTS PhoneBook ("+
"TelNum VARCHAR(100) PRIMARY KEY NOT NULL,"+
"Address TEXT);";

db.execSQL(query);

и если вы хотите применить внешние ключи, определенныев вашей таблице, затем вызовите следующий метод, прежде чем делать что-либо в вашей базе данных

db.execSQL("PRAGMA foreign_keys = ON;"); //enforcing FK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...