我从sqlite数据库中的用户那里获取信息。 但是当我插入已经在数据库中的相同记录时,它会再次添加。 我如何能够停止在sqlite中重复记录。我在android中开发这个。 我使用手机号码作为主键。还是在数据库中添加该记录。 请建议我适当的解决方案。 谢谢你提前。
答案 0 :(得分:2)
请注意REPLACE或INSERT OR REPLACE的限制,因为它们会覆盖您的应用程序用户添加到数据库中这些行的任何自定义数据 - 它不像其他SQL数据库中的UPSERT那样先进。
如前一篇文章所述,您确实需要确定主键是什么,并使用此信息来更新旧数据或在插入新数据之前删除旧行。
如果无法做到这一点,那么在运行插入之前,您可以始终DELETE FROM my_table或DROP my_table,这样就不会有重复项。这将(无论好坏)也确保新导入中缺少的数据不会留在您的应用程序中。
答案 1 :(得分:0)
确保在创建表格时将电话号码设置为主键。
例如:
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
答案 2 :(得分:0)
使用REPLACE INTO关键字:
REPLACE INTO my_table (pk_id, col1) VALUES (5, '123');
这会自动识别主键并找到要更新的匹配行,如果没有找到则插入新行。