sqlite-Datenbanken von Android auf PC übertragen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von User, 26.08.2010.

  1. User, 26.08.2010 #1
    User

    User Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    26.08.2010
    Guten Tag,

    ich habe eine Frage bezüglich der sqlite-Datenbanken bei Android. Ich habe ein Programm geschrieben, dass Daten (Postleitzahlen mit Datum und Uhrzeit) in einer Datenbank speichert. Diese würde ich nun gerne auch mit dem PC auslesen können.

    Bei den Emulatoren habe ich eine Möglichkeit gefunden, indem ich dort im Ordner /data/data/[Programmname]/databases die jeweilige Datenbank aufrufe und auslesen kann. Wenn ich aber mein Android-Gerät mit dem PC verbinde finde ich weder auf der SD-Karte noch im internen Speicher eine passende Datei.

    Deshalb nun meine Frage: Gibt es eine Möglichkeit, die Datenbank auch auf dem PC zu sehen? Oder gibt es vielleicht Software für Android, mit der die Datenbanken verschickt werden können? Ich selbst habe auch nach längerem Suchen (über Google) keine Ideen mehr.

    Mit freundlichen Grüßen,
    User
     
  2. Kranki, 26.08.2010 #2
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Liegt auf dem Gerät an derselben Stelle, allerdings hat da nur die App selber Zugriff (und root halt, das ist klar).
     
  3. User, 26.08.2010 #3
    User

    User Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    26.08.2010
    Kommt man denn vielleicht mit anderen Apps an die Datenbank?

    Als ich das Gerät an einen PC angeschlossen habe, wurde mir im Ordner Data nichts weiter angezeigt (noch nichteinmal ein Unterordner). Auch mit Android selbst werden keine Unterordner angezeigt...
     
  4. klausa2, 26.08.2010 #4
    klausa2

    klausa2 Fortgeschrittenes Mitglied

    Beiträge:
    298
    Erhaltene Danke:
    20
    Registriert seit:
    08.07.2009
    Du brauchst also entweder root. Dann kannst Du von Hand oder mit apps aus dem Market die db verschieben, auslesen oder irgendwohinexportieren. Oder Deine App muss eine zusätzliche Funktion bekommen, vielleicht nur in einem speziellen Modus für Dich zu verwenden, die die DB exportiert, z.B. als CSV Datei, auf SD. Die kann Dein PC dann wieder einlesen.
     
  5. the_alien, 26.08.2010 #5
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Man kann afair auch den Speicherort der DB vorher festlegen und sie so auf der SD Karte speichern.
     
  6. Kranki, 26.08.2010 #6
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Müsste die App nicht auch ihre eigene .db-Datei lesen können und die ganz simpel selber auf die SD-Karte kopieren können? Dürfte ja nur ein reines Zugriffsrechte-Problem sein, und Leserechte hat der User der App logischerweise auf die Datei.
     
  7. User, 26.08.2010 #7
    User

    User Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    26.08.2010
    @klausa2: Wie komme ich in den root-Modus? Ich habe leider noch nicht viel Erfahrung mit Android sammeln können. Das weitere exportieren wäre auch ein Idee, leider kann ich dann aber nur schwer etwas an der Datenbank verändern.

    @the_alien: Muss ich den Speicherort dann im Code angeben? Ich habe bislang nur den Datenbanknamen über
    Code:
    private static final String DATENBANK_NAME = "postleitzahlen.db"
    in meinem Quellcode festgelegt.


    EDIT: @Kranki: Wenn das gehen würde, wäre es natürlich auch praktisch. Dann könnte ich zum Beispiel bei Beenden des Programms eine Kopie erstellen. Leider weiss ich aber (noch) nicht, wie ich dies lösen könnte.
     
  8. User, 27.08.2010 #8
    User

    User Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    26.08.2010
    Ich habe nun einmal den Quellcode unter diesen Link ausprobiert: http://www.android-hilfe.de/android-codeschnipsel/15376-src-datenank-auf-sd-karte-mit-demo-app.html

    Leider kann ich das Programm aber nicht auf dem Gerät starten, da die Installation fehlschlägt (Vielleicht wegen der Version von Android? Konnte die vom Quelltext bisher nicht in Eclipse verändern, da ich kein passendes Menü gefunden habe).

    Außerdem habe ich den Quellcode verwendet, um die Datenbank auf der SD-Karte zu speichern. Aber auch dort wird die Datenbank nicht angezeigt, als ob die Datei garnicht vorhanden wäre...
     
  9. BFK, 05.03.2011 #9
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Ich weiss ist schon länger als ein Jahr her, aber bin zuffälig auf diesem Thread gestossen. Hatte das selbe Problem und habe es durch ein einfaches kopieren gelöst, genau das was Kranki schon geschrieben hat (Also die DB vom tele zur SD Karte kopieren).

    Naja, wenns jemand interessiert..:
    Code:
    private void copy_to_sd() throws IOException {
            File inputFile = new File("/data/data/[paketname]/databases/myDB");
            File outputFile = new File("/sdcard/myDB");  
            
            FileReader in = new FileReader(inputFile);
            FileWriter out = new FileWriter(outputFile);
            
            int c;
    
            while ((c = in.read()) != -1)
              out.write(c);
    
            in.close();
            out.close();
    }
    
    wobei myDB die zu kopierende Daten Bank ist.
    Natürlich muss man auch rechte für den Zugriff auf der SD haben..!

    -MFG BFK-
     
    Zuletzt bearbeitet: 05.03.2011
  10. Spookykid, 29.11.2011 #10
    Spookykid

    Spookykid Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    29.11.2011

    Hallo,

    der Code hat soweit bei mir funktioniert, jedoch bekomme ich eine Fehlermeldung, dass das file entweder encrypted oder corrupted ist, wenn ich es mit dem FireFox Plugin SQLiteManager öffne.

    Hattest du schonmal ein ähnliches Problem?

    Grüße Spookykid
     
  11. BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Hallo Spookykid,
    Ja ich hatte das gleiche Problem. Habe es auch mit dem Sqlite Manager öffnen wollen und es ging nicht, kam genau die gleich Fehlermeldung.
    Erst dann habe ich andere Methoden ausprobiert und die folgende scheint die beste zu sein..:

    Code:
    private void copy_to_sd(){       
                    
            File inputFile = new File("/data/data/[packetname]/databases/Track-DB");
            File outputFile = new File("/sdcard/myDB");
            
            FileReader in = null;
            FileWriter out = null;
            try {
                in = new FileReader(inputFile);
            } catch (FileNotFoundException e) {
                // Es gibt keine gespeicherte DB
            }
            if(in != null)
            {            
                try {
                    out = new FileWriter(outputFile);
                } catch (IOException e) {
                    // Problem beim speichern der DB auf der Karte
                }  
            
            }
            
            if(in != null && out != null)
            {
                try {
                      copyFile(inputFile, outputFile);
                      
                   } catch (IOException e) {
                     // Problem beim kopieren der DB
                     Toast.makeText(getApplicationContext(), "Beim kopieren der DB ist ein Fehler aufgetreten..!", Toast.LENGTH_LONG).show();  
                   }
                   
                Toast.makeText(getApplicationContext(), "Die DB wurde erfolgreich kopiert..!", Toast.LENGTH_LONG).show();  
            }
            
          }
    
    Wie es aussieht ist es besser "copyFile" zu benutzen, anstatt es selber zu machen..!

    Hoffe ich konnte helfen..!

    -MFG BFK-
     
  12. Spookykid, 30.11.2011 #12
    Spookykid

    Spookykid Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    29.11.2011
    Danke für deine Antwort. Ich werde es bei Gelegenheit einsetzen ;-)
     
  13. Fr4gg0r, 30.11.2011 #13
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Code:
        void copy(String from, String to)throws Exception{
            FileChannel in = new FileInputStream(from).getChannel();
            FileChannel out = new FileOutputStream(to).getChannel();
            in.transferTo(0, in.size(), out);
            in.close();
            out.close();
        }
    Ist auch zigmal schneller als die "Zeichen für Zeichen" Variante. ;)
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android sqllite datenbank kopieren