Android: повторяющиеся значения вставляются в базу данных - PullRequest
0 голосов
/ 11 ноября 2011

Каждый раз, когда я запускаю проект, одни и те же значения также вставляются в базу данных 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 голосов
/ 11 ноября 2011

Как выглядит ваша схема?Если вам не нужны повторяющиеся строки, и вы знаете, что определенный столбец будет уникальным, используйте для него спецификатор "UNIQUE".Если вы действительно хотите заменить строку, вы должны использовать команду databaseHelper «replace», т.е.dbHelper.replace (...);

0 голосов
/ 11 ноября 2011

DROP TABLE - довольно экстремальный способ остановить повторяющиеся значения.Немного сложно следовать коду, который вы разместили, но обычный способ остановить дубликаты - добавить уникальный индекс в соответствующие столбцы.Вы уже пробовали это?Например, что-то вроде

CREATE UNIQUE INDEX idx_keytype ON tableName (key_type) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...