M
Myriador
Neues Mitglied
- 0
Hallo,
Nun bin ich ganz neu hier und habe gleich eine Frage.
ich versuche gerade einigermaßen verzweifelt, eine schon existierende sqlitedatei in einer App zu verwenden.
Dazu habe ich eine Helperclass, die wie folgt aussieht:
Die Datei selbst liegt in assets.
Und nun kriege ich in der copy-Methode jedes Mal eine FilenotFoundException - ich hae schon zig verschiedene Schreibweisen ausprobiert.
Fällt irgendwem hier noch was ein was ich vergessen habe?
Nun bin ich ganz neu hier und habe gleich eine Frage.
ich versuche gerade einigermaßen verzweifelt, eine schon existierende sqlitedatei in einer App zu verwenden.
Dazu habe ich eine Helperclass, die wie folgt aussieht:
package com.example.myapp;
public class Helper extends SQLiteOpenHelper {
private static String path = "/data/data/com.example.myapp/databases/";
private static String db = "nn"; private static String dbpath = path + db;
private SQLiteDatabase myDB;
private Context con;
public Helper(Context context) {
super(context, db, null, 1); this.con = context;
}
public Context getContext(){
return this.con; }
public void createDataBase() throws IOException{
if(!checkDataBase()){
this.getReadableDatabase();
try {
copyDataBase(); }
catch (IOException e) {
System.out.println("no Database");
}
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try{
checkDB = SQLiteDatabase.openDatabase(dbpath, null, SQLiteDatabase.OPEN_READONLY); }
catch(SQLiteException e){ }
if(checkDB != null){
checkDB.close(); return true; }
else {return false;} }
private void copyDataBase() throws IOException {
InputStream myInput = con.getAssets().open(db);
OutputStream myOutput = new FileOutputStream(dbpath);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close(); }
public void openDataBase() throws SQLException{
myDB = SQLiteDatabase.openDatabase(dbpath, null, SQLiteDatabase.OPEN_READONLY); }
@Override
public synchronized void close() {
if(myDB != null) myDB.close(); super.close(); }
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub }
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub }
}
Die Datei selbst liegt in assets.
Und nun kriege ich in der copy-Methode jedes Mal eine FilenotFoundException - ich hae schon zig verschiedene Schreibweisen ausprobiert.
Fällt irgendwem hier noch was ein was ich vergessen habe?
Zuletzt bearbeitet: