android - 如何避免 Sqlite 数据库中的冗余?

标签 android sqlite

我为书签/收藏夹(按钮)创建了一个数据库(sqlite)。 该表只有 2 行(id、书签)。 每次我单击书签按钮时,它都会在书签列中添加相同的书签(字符串)。

这是我的数据库代码(DatabaseHelper.java):

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Bookmark.db";
public static final String TABLE_NAME = "bookmark_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "BOOKMARK";


public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY   AUTOINCREMENT, BOOKMARK TEXT)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i2) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

public boolean insertData(String bookmark){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_2, bookmark);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if(result == -1)
        return false;
    else
        return true;
}

public Cursor getAllData(){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from " + TABLE_NAME, null);
    return res;
}
}

如何使“书签”列唯一?

最佳答案

只需在列描述后添加UNIQUE,如下所示:

db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY  AUTOINCREMENT, BOOKMARK TEXT UNIQUE)");

关于android - 如何避免 Sqlite 数据库中的冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34805555/

相关文章:

android - <pragma value> 预期,得到 '?'

python - 将 .db 文件读入 Python

iphone - 在代码或数据库中传播删除?

iphone - 关于核心数据中实体索引的问题

android - 从 Button onClick 获取 TextView 的值并通过 TextWatcher 将值传递给 TextView

java - 如何在android中合并2张图片?

android - 如何使用gson解析json页面?

java - 每次运行应用程序时都会创建一个新数据库吗?

android - 持久服务

android - GMail 应用程序中的 Outlook HTML 签名 : Gap between <td> Elements