首页 > 解决方案 > 无法阻止将相同的数据插入 Sqlite

问题描述

我有一个应用程序,其中我只需要一次数据输入。我确实搜索了解决方案并应用了它,但仍然再次插入相同的数据记录。

我的代码如下:

在 SqliteHelper 类中(插入方法):

    public boolean insertData(ContactModel contactModel) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(col_0,contactModel.getId());
        contentValues.put(col_1,contactModel.getName());
        contentValues.put(col_2,contactModel.getNumber());
        contentValues.put(col_3,contactModel.getColor());
        contentValues.put(col_4,contactModel.getFSize());
//        long result =db.insert(Table_name,null,contentValues);

        long result = db.insertWithOnConflict(Table_name, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);

        if(result == -1){
            return false;
        }else{
            return true;
        }
    }

活动中插入数据的方法:

public void DataAdd(String name,String num,int color,int size){
    boolean indata = myhelper.insertData(new ContactModel(name,num,color,size));

    if (indata == true) {
        Toast.makeText(getApplicationContext(),"DataSave",Toast.LENGTH_SHORT).show();
    }
    else{
        Toast.makeText(getApplicationContext(),"In Data not True",Toast.LENGTH_SHORT).show();
    }

}

装箱台:

 @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE "+ Table_name +"(Id INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, NUMBER TEXT, COLOR INTEGER, FSIZE INTEGER) ");

    }

标签: androiddatabaseandroid-sqlite

解决方案


当定义表必须使用主键作为 id 时:

  private static final String DB_CREATE_MY_TABLE = "CREATE TABLE " + TABLE_NAME + " ( " +
        "  id        INTEGER  PRIMARY KEY ," +
        "  xofId     INTEGER  NULL," +
        "  code      INTEGER  NULL" +
        ");";

如果你想增加 id 自动使用:

id INTEGER PRIMARY KEY   AUTOINCREMENT,

推荐阅读