Android:正在将重复值插入到数据库中

时间:2011-11-11 04:57:36

标签: android sqlite

每次运行项目时,同样的值也会插入到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);
       }
       }

任何人都可以帮我解决这个问题。

由于

2 个答案:

答案 0 :(得分:0)

DROP TABLE似乎是一种尝试停止重复值的极端方法。遵循您发布的代码有点困难,但停止重复的常规方法是在相应的列上添加唯一索引。你试过那个吗?例如。

之类的东西
CREATE UNIQUE INDEX idx_keytype ON tableName (key_type) 

答案 1 :(得分:0)

您的架构是什么样的?如果您不想要重复行,并且您知道某个列将是唯一的,请使用“UNIQUE”说明符。如果您真正想要的是要替换行,则必须使用databaseHelper命令“replace”即。 dbHelper.replace(...);