gpt4 book ai didi

android - 如何删除sqlite数据库中的重复值?

转载 作者:行者123 更新时间:2023-11-29 18:46:02 24 4
gpt4 key购买 nike

我正在开发一个 iun,它从 firebase 上传和检索数据,在检索它之前,将它存储在 Sqlite 数据库中,但在每次插入时都在 sqlite 数据库中,重复值插入到 Sqlite 数据库中 如何在插入前忽略重复值以及如何解决这个问题。

public static final int DB_VERSION =1;

public static String getDataBASE_NAME() {
return DataBASE_NAME;
}

public static void setDataBASE_NAME(String dataBASE_NAME) {
DataBASE_NAME = dataBASE_NAME;
}

public static String DataBASE_NAME;


Context context;




private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + DocumentsReader.FeedEntry.TABLE_NAME + "(" +
DocumentsReader.FeedEntry._ID + " INTEGER PRIMARY KEY," +
DocumentsReader.FeedEntry.COLUMNS_TITLE + " TEXT," +
DocumentsReader.FeedEntry.COLUMN_SUB_TITLE + " TEXT)";



private static final String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS " +DocumentsReader.FeedEntry.TABLE_NAME;




public DocumentsDatabaseHelper(Context context) {
super(context, DocumentsDatabaseHelper.getDataBASE_NAME(), null, DB_VERSION);


this.context =context;


}


@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(SQL_CREATE_ENTRIES);



}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

sqLiteDatabase.execSQL(SQL_DELETE_ENTRIES);
onCreate(sqLiteDatabase);

}

//sqlitedatabase android studio 中的加值方法

  public void addDocuments(String name , String Uri, DocumentsDatabaseHelper documentsDatabaseHelper){

SQLiteDatabase db= documentsDatabaseHelper.getWritableDatabase();
ContentValues values =new ContentValues();
values.put(DocumentsReader.FeedEntry.COLUMNS_TITLE,name);
values.put(DocumentsReader.FeedEntry.COLUMN_SUB_TITLE,Uri);


long rows= db.insertWithOnConflict(DocumentsReader.FeedEntry.TABLE_NAME,null ,values,SQLiteDatabase.CONFLICT_REPLACE);

if(rows==-1){


Toast.makeText(context,"not inserted", Toast.LENGTH_SHORT).show();

}
else{
Toast.makeText(context, String.valueOf(rows)+"inserted", Toast.LENGTH_SHORT).show();


} }

最佳答案

您必须在表的 CREATE 语句中使用 UNIQUE 来标识您不希望具有重复值的列。因此,如果您想将此属性应用于 DocumentsReader.FeedEntry.COLUMNS_TITLE 列,请使用:

private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + DocumentsReader.FeedEntry.TABLE_NAME + "(" +
DocumentsReader.FeedEntry._ID + " INTEGER PRIMARY KEY," +
DocumentsReader.FeedEntry.COLUMNS_TITLE + " TEXT UNIQUE," +
DocumentsReader.FeedEntry.COLUMN_SUB_TITLE + " TEXT)";

此更改后,您需要从测试它的设备/模拟器中卸载该应用程序,然后重新运行以重新创建数据库。

关于android - 如何删除sqlite数据库中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51921352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com