2011-12-29 22 views
0

私のアプリケーションのうちの1つで非常に迷惑な問題があります。アプリケーションとデータベースのインクリメントされたバージョンでアップデートをリリースするとき。 Updateでエキスパンドリストビューで厄介なSQLiteクエリの問題

発射され、古いデータベースが削除され、新しいが持ち込まれている。以下は、国をクリックすると、それができて拡張可能なメニューは、このに入ってくる

db.execSQL("DROP TABLE IF EXISTS table"); 
     db.execSQL("DROP TABLE IF EXISTS android_metadata"); 

     try { 
      InputStream is = getAssets().open("sqlfile"); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
      String line = reader.readLine(); 
      while(line != null){ 
       db.execSQL(line); 
       line = reader.readLine(); 
      } 
      reader.close(); 

     } catch (IOException e) { 

      throw new Error("Error copying database"); 

     } 

    } 

更新コードでありますその国のすべての行が表示されます。問題は、以前のバージョンではこれはうまくいきました。しかし、それが更新されると、これはまったく機能しませんが、他のすべてのクエリはうまく機能します。関連するクエリは以下のとおりです。

  protected Cursor getChildrenCursor(Cursor groupCursor) { 

        String countryID = Integer.toString(groupCursor.getInt(groupCursor.getColumnIndex("_id"))); 
        SQLiteDatabase checkDB = null; 
        checkDB = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY); 

        Cursor value = checkDB.rawQuery("SELECT * FROM countries WHERE open='1' AND country=?", new String[]{countryID}); 

        //checkDB.close(); 

        return value; 
      } 

答えて

1

onUpdateで、データベースデータを一時テーブルにバックアップし、テーブルを削除して新しいテーブルを作成します。 Fnally、古いデータをコピーバックします。

UPDATE:

あなたは可能性もJava変数へのバックアップデータを使用すると、オープンして新しいデータベースを作成するカーソルを経由して、私は、現時点では間違って何をやっているバック

+0

それらをダンプします。私がしたいのは、古いものを削除し、新しいものをインポートすることだけです。確かにこれはあなたの提案と同じですが、テンポラリテーブルを削除する – Somk

+0

テーブルをドロップしています –

関連する問題