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) ");
}
解决方案
当定义表必须使用主键作为 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,
推荐阅读
- javascript - 有没有更好的方法在 Mocha 的“之前”调用中定义变量?
- android - Room TypeConverter 将多个数据库列转换为一个字段?
- wpf - 在 DataTemplateSelector 中修改基于 XAML 的 DataTemplate
- php - 如何在laravel中将问题变成100的关系
- c# - 如何从 WPF 中的不同项目执行命令?
- python - 如何从另一个二维数组中分割一个二维数组并获得其余部分
- scala - spark scala avro 写入失败并出现 AbstractMethodError
- c# - 属性更改未更新绑定控件属性
- python - 从 Lambda 函数查询 Athena - QUEUED 状态?
- python - TypeError:尝试从数据框中绘制数据时预期的字符串或类似字节的对象