1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung 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] Webview Cache funktioniert nicht Android App Entwicklung 31.10.2017
[OFFEN] Keine doppelten Einträge in die Firebase Datenbank Android App Entwicklung 27.10.2017
[OFFEN] Übereinstimmung Spracherkennung Datenbank finden Android App Entwicklung 13.10.2017
[OFFEN] Komplette SQLite Datenbank verschlüsseln Android App Entwicklung 19.09.2017
[OFFEN] SQLITE insert gibt negative id zurück Android App Entwicklung 18.09.2017
[Offen] Android Layout funktioniert nicht Android App Entwicklung 08.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] SVN Commit in Android Studio funktioniert nicht mehr Android App Entwicklung 07.08.2017
[OFFEN] Bitmap.recycle funktioniert nach drawBitmap nicht Android App Entwicklung 18.07.2017
Du betrachtest das Thema "Connection zur SQLite Datenbank funktioniert nicht" im Forum "Android App Entwicklung",