Kann nicht auf meine DB schreiben

B

Butch78

Neues Mitglied
0
Hi Leute,

hab folgendes kleines Problem. Ich möchte gerne in meiner Datenbank bel. Datensätze löschen.
Meine DB öffne nich wie folgt:

SQLiteDatabase checkDB =​
null;
try{
String myPath =
DB_PATH + DB_NAME;

checkDB = SQLiteDatabase.openDatabase(myPath,
null, SQLiteDatabase.OPEN_READWRITE);
...

Das Auslesen der Daten funzt alles perfekt, nur beim Löschen bekomme ich immer den Fehler: attempt to write a readonly database....

Ich habe doch aber "OPEN_READWRITE" angegeben. Sollte ich doch auch schreiben dürfen?

Gruß

Butch
 
SQLite DBs sind unterm Strich Dateien, die irgendwo im Filesystem liegen. Liegt deine DB irgendwo (zB in den Resourcen), wo die App nicht schreiben darf?
 
Sie liegt in meinem Dataverzeichnis:
data/data/de.androiddev.myfirstDBapp/databases/mydb.db

Gruß
 
kann mir jemand weiterhelfen? :cool2:

Grüße

Butch
 
wie kam die DB in diesen Ordner? hast du es über ADB reinkopiert oder wie schaut dein code zum erzeugen der DB aus?
 
Hi,

das interne Speichern hab ich verworfen. Ist wohl besser wenn ich meine DB auf der SD-Karte sichere.

Das mache ich wie folgt:
Ich prüfe erst ob meine DB auf der SD Karte vorhanden ist, falls nicht soll diese neu erstellt werden. Dazu kopiere ich mir einfach eine fertige DB aus meinem Asset - Ordner zu meiner SD Karte. Soweit der Plan. Beim OutputStream bekomme ich eine FileNotFoundException...

Als Pfad bekomme ich beim Debugen hier mnt/sdcard/myTestApp/test.db
Sollte er den Pfad + Datei nicht anlegen?
Und was ist mnt für ein Verzeichnis?

Code:
private String DB_NAME = "test.db"
private String APP_Name = "myTestApp"
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]private[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] String [/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]DB_PATH[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Environment.[I]getExternalStorageDirectory[/I]().getAbsolutePath();[/SIZE]
 
 

[SIZE=2]InputStream myInput = 
[/SIZE][LEFT][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]myContext[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getAssets().open([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"database/"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]+[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]DB_NAME[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]);[/SIZE]
 
[LEFT][SIZE=2]String outFileName = [/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]DB_PATH[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"/"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]APP_NAME[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2] + [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"/"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]DB_NAME[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2];[/SIZE][/LEFT]
 
[LEFT][SIZE=2]OutputStream myOutput = [/LEFT]
[/LEFT]
[/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] FileOutputStream(outFileName);[/SIZE]
 
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][] buffer = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][1024];[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] length;[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ((length = myInput.read(buffer))>0){[/SIZE]
[SIZE=2]myOutput.write(buffer, 0, length);[/SIZE]
[SIZE=2]}[/SIZE][/LEFT]
 
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//Close the streams[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f]
[/COLOR][/SIZE][SIZE=2]myOutput.flush();[/SIZE]
[SIZE=2]myOutput.close();[/SIZE][/LEFT]
[SIZE=2]myInput.close();[/SIZE]

Die notwendigen Rechte habe ich auch gesetzt:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


Grüße

Butch
[/LEFT]
 
Hast du deine DB geschützt? Vielleicht vergessen dort die Rechte zu setzen?
 

Ähnliche Themen

D
Antworten
3
Aufrufe
438
jogimuc
J
B
Antworten
4
Aufrufe
430
bb321
B
A
Antworten
17
Aufrufe
1.827
starbright
S
Zurück
Oben Unten