无法阻止将相同数据插入Sqlite

时间:2019-03-04 07:32:22

标签: android database android-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) ");

    }

1 个答案:

答案 0 :(得分:0)

当定义表必须使用主键作为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,