2011-11-11 4 views
0

プロジェクトを実行するたびに、同じ値がアンドロイドデータベースにも挿入されます。私が必要としている場合でも、私はドロップを与えている。私は必要なのは、データベースのデータが更新されるのは、毎回データベースを作成するのではなく、サーバー側からの応答に変更がある場合だけです。テーブルに値が再び挿入されました。これをどうすれば解決できますか?以下は私のコードです: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); 
     } 
     } 

誰でもこの問題の解決方法を教えてください。

おかげ

+1

挿入コードが表示されません。 –

+1

何が起きているのかを知るために、コードをよりよく把握する必要があります。 – brianestey

答えて

0

DROP TABLEは重複した値を停止しようとしているのはかなり極端な方法です。投稿したコードに従うのは少し難しいですが、重複を停止する通常の方法は、適切な列に一意のインデックスを追加することです。まだ試しましたか?例えば。何かのように

CREATE UNIQUE INDEX idx_keytype ON tableName (key_type) 
+0

私が必要とするのは、毎回データベースを作成するのではなく、サーバー側からの応答に何らかの変更がある場合に限り、データベースのデータが更新されますが、同じ値に同じ値が再び挿入されるということです。これをどうすれば解決できますか? – ekjyot

0

あなたのスキーマはどのように見えますか?列が重複しないようにするには、特定の列が一意であることがわかっている場合は、その行に "UNIQUE"指定子を使用します。本当に必要な行が置き換えられる場合は、databaseHelperコマンド "replace"を使用する必要があります。 dbHelper.replace(...);

関連する問題