Вы не используете INSERT OR REPLACE
, как следует.INSERT OR REPLACE
или просто REPLACE
делает:Проверяет перед вставкой новой строки, если эта строка будет нарушать ограничение и-if нарушает ограничение , удаляет существующую строку, а затем вставляет новую строку-if это не нарушает ограничение , затем продолжается и вставляет новую строкуВ вашей таблице единственное существующее ограничение:
id INTEGER PRIMARY KEY
и ничего больше.Это означает, что каждый раз, когда вы пытаетесь вставить новую строку:-Если новый id
уже существует в таблице, тогда эта существующая строка будет удалена, а новая строка будет вставлена-Если новый id
еще не существует , то будет вставлен новый ряд.Это то, что вы хотите?Я думаю, что вы хотите ограничить уникальность двух столбцов (FAVCurrentLocationLAT,FAVCurrentLocationLONG)
, которые должны быть PRIMARY KEY
в таблице, поскольку я не думаю, что id
необходим (или, возможно, он необходим, но этоне причина неудачной вставки).Поэтому замените оператор таблицы CREATE
следующим образом:
CREATE TABLE myTable74 (
FAVCurrentLocationLAT TEXT,
FAVCurrentLocationLONG TEXT,
PRIMARY KEY(FAVCurrentLocationLAT,FAVCurrentLocationLONG)
);
Теперь каждый раз, когда вы выполняете оператор:
SQLiteQuery =
"INSERT OR REPLACE INTO myTable74(FAVCurrentLocationLAT, FAVCurrentLocationLONG) " +
"VALUES('"+mCurrentLocation.getLatitude()+"','"+mCurrentLocation.getLongitude()+"');";
будут добавляться новые пары значений и существующие будутзаменены.Замена, конечно, не требуется, поэтому вы можете просто проверить по коду, есть ли значения в таблице, и они просто не выполняют оператор INSERT
(вместо REPLACE
).