2016-06-09 11 views
0

die Tabelle aktualisiert werden (dh Impfstoffe) Struktur:android sqlite - Tabellendaten können nicht

ID- Autoinkrement Primärschlüssel

dose1_date - String

dose2_date - String

Die DatabaseAccessor Klasse ist wie folgt. Die Methoden initDB() und setVaccineDates werden von einer anderen Aktivität aufgerufen. Aber die Datenbank wird nicht aktualisiert. Die protokollierte Nachricht befindet sich jedoch im logcat. Die DatabaseHelper Klasse wird hier nicht angezeigt.

public class DatabaseAccessor { 

    public static DataBaseHelper myDbHelper = null; 
    public static SQLiteDatabase rdb = null; 
    public static SQLiteDatabase wdb = null; 

    public static synchronized final void initDB(Context context) throws Exception { 
     if (myDbHelper == null) { 
      myDbHelper = new DataBaseHelper(context); 
      myDbHelper.openDataBase(); 
      rdb = myDbHelper.getReadableDatabase(); 
      wdb = myDbHelper.getWritableDatabase(); 
     } 
    } 



    public static void setVaccineDates(String birthDate) throws SQLException{ 


     try { 
      String[] selections = null; 
      String qry = null; 
      qry = "select * from vaccines order by id"; 

      Cursor cursor = wdb.rawQuery(qry, selections); 

      Log.d("update qry===== ", qry); 

      while (cursor.moveToNext()) { 
       int rowID = Integer.parseInt(cursor.getString(0)); 

       ContentValues values = new ContentValues(); 
       values.put("dose1_date","66666"); 
       values.put("dose2_date","7777"); 
       wdb.update("vaccines", values, "id=?", new String[] {String.valueOf(rowID)}); 

       //wdb.close(); 
      } 
      cursor.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 

     } 



    }// end of method setVaccineDates 

} 

Was ist zu tun?

bearbeiten: Wenn ich die wdb.close() Linie Kommentar-, sehe ich in logcat

'06 -09 04: 21: 05,387: W/System.err (4144): java.lang.IllegalStateException: Versuch, Öffnen Sie ein bereits geschlossenes Objekt: SQLiteDatabase: /data/data/com.cloudsoft.vaccine/databases/vaccines2.db '

+0

zu beobachten bcc nach dem Schließen Sie versuchen, wieder in der While-Schleife zu aktualisieren. – Bharatesh

+0

Wissen Sie, ob Sie die While-Schleife erreichen? Ist dein Tisch belegt? –

+0

@DanielK, ich sagte, die Logcat-Nachricht ist sichtbar –

Antwort

0

Als Neuling in Android war es nur ein Fehler aus Unwissenheit, die diese Situation nahm Ort: nach update Betrieb habe ich versucht, die Änderungen in der Datenbankdatei zu finden (dh Datei mit .db Erweiterung sitzt innerhalb assets Ordner in Eclipse) durch sqlite browser. Aber was tatsächlich passiert, ist die App im Gerät ausgeführt (echte oder Emulator) hat seine eigene Datenbank, die aus der .db Erweiterungsdatei in assets Ordner und konsequente Datenbank-Operationen erstellt nur Auswirkungen auf die eigene Datenbank der App keine Berührung auf die Datenbank innerhalb der erwähnten Ordner in Eclipse. Und es gibt die Möglichkeit, die eigene Datenbank der App im laufenden Gerät in Eclipse "Datei-Explorer" (im DDMS-Modus) mit Hilfe von Questoid SQlite Manager