每次运行项目时,同样的值也会插入到android数据库中。即使我已经给出了丢弃,如果存在查询。我需要的是,只有当服务器端的响应发生了一些变化而不是每次崩溃数据库时,数据库中的数据才会更新,但是我发生的事情是相同的值在表中再次插入。我该如何解决这个问题?以下是我的代码:
public void onCreate(SQLiteDatabase database) {
try{
// onUpgrade(database, oldVersion, newVersion)
database.execSQL(DATABASE_CREATE);
}
catch (Exception e) {
System.out.println("in on create db"+e);
}}
public void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
database.execSQL("DROP TABLE IF EXISTS" +DATABASE_CREATE);
onCreate(database);
}
private static final String INSERT = "insert into "
+ DATABASE_TABLE + "(KEY_TYPE,KEY_ENCODING,KEY_WIDTH,KEY_HEIGHT,KEY_DATA,KeyIId)"+" values (?,?,?,?,?,?)";
public WineDatabaseAdapter(Context context) {
try{
this.context = context;
openHelper = new WineDatabaseHelper(context);
this.db=openHelper.getWritableDatabase();
this.insertStmt=this.db.compileStatement(INSERT);
}
catch(Exception e)
{
System.out.println(e);
}
}
任何人都可以帮我解决这个问题。
由于
答案 0 :(得分:0)
DROP TABLE似乎是一种尝试停止重复值的极端方法。遵循您发布的代码有点困难,但停止重复的常规方法是在相应的列上添加唯一索引。你试过那个吗?例如。
之类的东西CREATE UNIQUE INDEX idx_keytype ON tableName (key_type)
答案 1 :(得分:0)
您的架构是什么样的?如果您不想要重复行,并且您知道某个列将是唯一的,请使用“UNIQUE”说明符。如果您真正想要的是要替换行,则必须使用databaseHelper命令“replace”即。 dbHelper.replace(...);