1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. android_noob123, 20.11.2010 #1
    android_noob123

    android_noob123 Threadstarter Neuer Benutzer

    Hey Leute,

    ich ärger mich jetzt schon Stunden mit dem Zugriff auf eine SQLite DB rum. Habe inzwischen zwei Tutorials gemacht, im Internet nach dem Fehler gesucht aber meinen Zugriff auf eine SQLite DB immer noch nicht hinbekommen. :angry:
    Immer bekomme ich folgende Meldung: android.database.sqlite.SQLiteException: unable to open database file

    Pfad und Namensgebungt ist doch korrekt? Benötige ich einen Zusatz .sqlite?
    Nicht, dass ich es damit noch nicht probiert hätte, aber trotzdem wichtig zu wissen.
    Code:
    final static String DB_PATH = "C:Hier/steht/mein/Pfad/";
    final static String DB_NAME = "mydatabase";
    
    Wenn dieser Teil doch schon stimmt, dann müsste ich doch ohne Probleme entweder eine Datenbank öffnen können:
    Code:
    myDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    
    oder falls es diese noch nicht gibt, sie erstellen:
    Code:
    myDB = SQLiteDatabase.openOrCreateDatabase(myPath, null);
    
    Schon allein das klappt bei mir nicht. Zusätzlich habe ich noch permissions vergeben....erfolglos. Vielleicht die falschen??

    Mhh...wäre euch für Hilfe sehr dankbar, bin gerade etwas ratlos...

    Gruß
     
  2. funcoder, 20.11.2010 #2
    funcoder

    funcoder Erfahrener Benutzer

    Äh ich glaube, das Problem dürfte daran liegen, das du ein Windows Pfad angibst. Das ganze läuft aber im Emulator, also muss deine DB auch innerhalb des Emulator Bereichs gespeichert werden. Quasi:

    /data/data/com.Dein.Package/databases/

    final static String DB_PATH = "/data/data/com.Dein.Package/databases/";

    Die obige Zeile ändern, dann sollte es funktionieren.
     
  3. enrem, 20.11.2010 #3
    enrem

    enrem Erfahrener Benutzer

    Wenn du die Daten auf einer SD-Karte hast dann "/sdcard/deine_datenbank.db"

    Code:
    public class SQLSample extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            SQLiteDatabase db = null;
    
            try {
                
                // Datenbank auf SD-Karte erzeugen anschl. öffnen
                String path = "/sdcard/renem_sql_sdcard.db";
                db = SQLiteDatabase.openOrCreateDatabase(path, null);
    
                // Tabelle Kontakt ertsellen
                db.execSQL("CREATE TABLE IF NOT EXISTS " + "Kontakt" + " (Suchname TEXT, Telefon TEXT);");
    
                // Datensätze einfügen
                db.execSQL("INSERT OR IGNORE INTO " + "Kontakt" + " VALUES ('Homer', '1234567890');");
                db.execSQL("INSERT OR IGNORE INTO " + "Kontakt" + " VALUES ('Lisa',  '2345678901');");
                db.execSQL("INSERT OR IGNORE INTO " + "Kontakt" + " VALUES ('Bart', '3456789012');");
                db.execSQL("INSERT OR IGNORE INTO " + "Kontakt" + " VALUES ('Karl',  '4567890123');");
    
                String[] values = { "Suchname", "Telefon" };
                Cursor myCursor = db.query(true, "Kontakt", values, null, null, null, null, null, null);
    
                if (myCursor != null) {
                    int suchname = myCursor.getColumnIndexOrThrow("Suchname");
                    int telefon = myCursor.getColumnIndexOrThrow("Telefon");
                    
                    String result = "";
                    if (myCursor.moveToFirst()) {
                        do {
                            String suchn = myCursor.getString(suchname);
                            String tel = myCursor.getString(telefon);
                            result = result + "Suchname : "+ suchn + " Telefon : " + tel + "\n";
                        } while (myCursor.moveToNext());
                    }
                    
                    result = result + "\nDie Datenbank (renem_sql_sdcard.db) befindet "+
                    "sich auf der SD-Karte. Mit dem SQLite Databrowser können Sie direkt darauf zugreifen.";
    
                    TextView myMessage = (TextView) findViewById(R.id.message);
                    myMessage.setText(result);    
    
                }        
            
            } catch (Exception e) {
                // Fehler ggf. ist die Karte gemountet oder die android.permission.WRITE_EXTERNAL_STORAGE
                // im Manifest wurde vergessen....
                ;
            } finally {
                db.close();
                Toast.makeText(getApplicationContext(), "Alle OK.", Toast.LENGTH_LONG).show();
            }
            
        }
    }
    
    Wichtig ist auch die Premission in der Manifestdatei.

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="de.renem.android.sqlsdcard"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <permission-group android:name="android.permission-group.STORAGE"></permission-group>
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".SQLSample"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="6" />
    </manifest> 
    
    Hier ein funktionierendes Beispiel: Schnipsel:RM SQL SDCard ? Android-Schnipsel-Wiki

    Gruß enrem
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Updateinstallation: Trotzdem Datenbank gelöscht Android App Entwicklung 12.05.2017
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[OFFEN] Google-Spracherkennung funktioniert nicht im Tablayout Android App Entwicklung 20.04.2017
[ERLEDIGT] Datenbank in eine Cloud sichern (Backup) Android App Entwicklung 29.03.2017
[ERLEDIGT] In SQLite DB auf nächsten/vorherigen Datensatz zugreifen Android App Entwicklung 23.03.2017
Wie bekomme ich Map Markers von einer SQL Datenbank Android App Entwicklung 11.03.2017
[ERLEDIGT] TextView text "Heute ist der dd.MM.yyyy" funktioniert überhaupt nicht Android App Entwicklung 08.03.2017
Excel Dokument mithilfe von JExcelAPI auslesen funktioniert nicht :/ Android App Entwicklung 02.03.2017
SQLite asynchron benutzen Android App Entwicklung 26.02.2017
adb starten funktioniert nicht Android App Entwicklung 25.02.2017
Du betrachtest das Thema "Connection zur SQLite Datenbank funktioniert nicht" im Forum "Android App Entwicklung",