Android 如何在SQLite中放置不重复的值&;通道
我的创建表查询是:-- 我正在访问此代码中的值:---Android 如何在SQLite中放置不重复的值&;通道,android,sqlite,cursor,Android,Sqlite,Cursor,我的创建表查询是:-- 我正在访问此代码中的值:--- String selectQuery=“SELECT*FROM”+TABLE\u FORWARDMSG; SQLiteDatabase db=this.getReadableDatabase(); Cursor Cursor=db.rawQuery(selectQuery,null); if(cursor.moveToFirst()){ 对于(int i=0;i您的代码看起来不错。也许您不应该将KEY_MSG_DATE设置为UNIQUE。请
String selectQuery=“SELECT*FROM”+TABLE\u FORWARDMSG;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
对于(int i=0;i您的代码看起来不错。也许您不应该将KEY_MSG_DATE设置为UNIQUE。请尝试获取有关您想要执行的操作的更多信息。您实现的是,在每个列中的每个条目在列中都必须是唯一的,但我假设您想要的是包含列msgBody、msgAddress和msgDate的行必须是be在表中是唯一的
您可以通过将所有列放在UNIQUE子句中来实现这一点:
UNIQUE(msgBody, msgAddress, msgDate) ON CONFLICT REPLACE
请检查这个答案,希望它能帮助你在每次迭代时创建一个新的映射对象,否则你只需重新修改同一个对象。此外,如果你有一个唯一的约束,并尝试多次插入同一行,当然最后只会得到一行。在我的例子中,你的答案的答案是奈克已经
String selectQuery="SELECT * FROM "+TABLE_FORWARDMSG;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.rawQuery(selectQuery, null);
if( cursor.moveToFirst()){
for(int i=0;i<cursor.getCount();i++){
map.put("msgBody", cursor.getString(1));
map.put("msgAddress", cursor.getString(2));
map.put("msgDate", cursor.getString(3));
user.add(map);
cursor.moveToNext();
}
}
cursor.close();
db.close();
UNIQUE(msgBody, msgAddress, msgDate) ON CONFLICT REPLACE