Mit vorhandener Datenbank arbeiten

  • 2 Antworten
  • Letztes Antwortdatum
X

xabi

Neues Mitglied
0
Hi Leute,

ich habe folgendes Problem:

ich habe eine erste App geschrieben die Daten in eine Datenbank speichert.
Die wird als .db File im Package Ordner intern und extern auf der SD Karte abgespeichert.

Nun schreibe ich eine zweite App, die diese Daten verarbeiten soll. Ich komme aber irgendwie nicht so recht weiter, wie ich dem SQLiteHelper klarstellen kann dass er die Datenbank nicht neu erzeugen, sondern mit der vorhandenen auf der SD Karte arbeiten soll.

Ich bin am verzeifeln, Ratschläge sind willkommen!
 
Zeig uns doch, wie du auf die Datenbank zugreifst, spich Code.
Im SQLiteOpenHelper kannst du ja festlegen, welche Datenbankdatei er öffnen/benutzen soll....

Bspw. so:
PHP:
dDatabase = SQLiteDatabase.openDatabase(Config.getDbPath(cContext) + Config.dbName, null, flags);
 
Hi reneph,

danke für deine Antwort. Ich habe das jetzt so in den Code eingefügt.


Code:
	public MySQLiteHelper(Context context) {
 		super(context, DB_NAME, null, DB_VERSION);
	        [B]db = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH + DB_NAME, null,SQLiteDatabase.OPEN_READWRITE);  [/B]

  
	}

	// Tables in SQLite are created
	public void onCreate(SQLiteDatabase db) {

		db.execSQL(TABLE1);
		db.execSQL(TABLE2);
		db.execSQL(TABLE3);
		db.execSQL(TABLE4);

	}

	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("DROP TABLE IF EXISTS SCANITEM");
		onCreate(db);
	}


Reicht das damit nun meine DB verwendet wird? Ich bin auf dem Gebiert noch blutiger Anfänger muss ich zugeben.

edit://

Wenn ich in meiner MySQLiteDatabase Klasse nun folgenden Code ausführe:
Code:
		helper = new MySQLiteHelper(context);
		db1 = helper.getWritableDatabase();
		Toast.makeText(context, db1.getPath()
wird als Pfad wieder die interne DB im Package/databases Ordner gezeigt.

edit2://

Ich rufe meine Datenbank nun mit
Code:
		helper = new MySQLiteHelper(context);
		db1 = helper.openOrCreateDatabase("database.db",  0, null);
in der Klasse MySQLiteDatabase auf.

Die Methode openOrCreateDatabase habe ich in MySQLiteHelper wie folgt überschrieben:
Code:
public SQLiteDatabase openOrCreateDatabase(String name, int mode,
	CursorFactory factory) {
		db = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH + File.separator
				+ "Backup" + File.separator + name, null,
				SQLiteDatabase.OPEN_READWRITE);
	    return db;
	}
Meinst du damit kann ich arbeiten? db.getPath() zeigt mir nun den korrekten Pfad nämlich den von der SD an.
 
Zuletzt bearbeitet:
Zurück
Oben Unten