Android SQLite表约束唯一且冲突替换使用
复制前请先阅读。 我试图在SQLite表中插入经度和纬度值,我希望它是唯一的值,经过一些研究,我发现并回答了非常有用的问题,虽然它们都是为简单的查询编写的,但我无法找到如何使我的查询同时满足约束条件unique和ON\u CONFLICTION\u REPLACE 问题如下:Android SQLite表约束唯一且冲突替换使用,android,sqlite,android-sqlite,unique-constraint,Android,Sqlite,Android Sqlite,Unique Constraint,复制前请先阅读。 我试图在SQLite表中插入经度和纬度值,我希望它是唯一的值,经过一些研究,我发现并回答了非常有用的问题,虽然它们都是为简单的查询编写的,但我无法找到如何使我的查询同时满足约束条件unique和ON\u CONFLICTION\u REPLACE 问题如下: private static final String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_LOCATIONS + "("
private static final String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_LOCATIONS + "("
+ UID + " TEXT PRIMARY KEY," + ADDRESS + " TEXT,"
+ LONGITUDE + " TEXT unique," + LATITUDE + " TEXT unique" + ")";
但这种独特性并没有造成任何区别,在我的案例中,是不是强制在冲突上使用\u REPLACE
从中,我可以在多个列上同时应用unique,但插入后仍然会得到重复的值。有人能从我的疑问中提出适当的疑问并帮助我理解所有事情吗?谢谢将您的表格结构更改为此
private static final String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_LOCATIONS + "("
+ UID + " TEXT PRIMARY KEY," + ADDRESS + " TEXT,"
+ LONGITUDE + " TEXT," + LATITUDE + " TEXT,
UNIQUE(" + LOGITUDE + "," + LATITUDE + ") ON CONFLICT REPLACE)";
然后,在执行插入操作时,请使用以下方法
ContentValues insertValues = new ContentValues();
insertValues.put(LATITUDE, latitude);
insertValues.put(LOGITUDE, longitude);
db.insertWithOnConflict(TABLE_LOCATIONS, null, insertValues, SQLiteDatabase.CONFLICT_REPLACE);
您是在寻找纬度和经度组合的唯一约束,还是单独寻找纬度和经度的唯一约束?不,我想要它,我是指Long和Lat@Samuelbut的集合,但简单插入方法有什么问题?因为在应用您的查询后,它仍然会使用重复的值。是否尝试卸载现有的apk?只有在重新创建数据库后,新表定义才会反映出来。否仍然不起作用我总是从db.insert METHOL@SAMUELROBERRTC获取long的增量行值。是否可以发布insert函数?让我们来看看。