Datenbank im Ordner assets?

J

jWoz

Neues Mitglied
0
Hallo Zusammen,

aktuell arbeite ich mich in die Android-App-Entwicklung ein, indem ich versuche ein von mir erstelltes Java-Prog auf Android lauffähig zu machen. Das gemeinte Java-Programm enthält eine MS-Access-Datenbank und soweit ich weiß sind Access-Datenbanken nicht Android-Konfrom, sodass ich im vorfeld schon mal die Datenbank mit SQLite realisert habe.

Nun zu meinem vorgehen! Ich habe die SQLite Datenbank in den Ordner "assets", zu finden im Applications-Dateisystem, reinkopiert und versucht diese über folgendem Code anzuspielen

Code:
                public class Conn_db {
                private static Connection con;

                public Bank hole_bank_daten(String vorname, String name) throws Exception{

                Class.forName("SQLite.JDBCDriver");
		DriverManager.getConnection("jdbc:sqlite:/assets/datenbank.sqlite");
		PreparedStatement stmt;
		stmt = con.prepareStatement("SELECT * FROM Daten WHERE" + strWhere);
		stmt.setString(1, vorname);
		if (b_ort) stmt.setString(2, nachname);
		ResultSet rs = stmt.executeQuery();
                .....

Wenn ich es compiliere, erhalte die Meldungen:

10-22 11:08:35.261: WARN/System.err(295): java.sql.SQLException: java.sql.SQLException: SQLite.Exception: unknown error in open
10-22 11:08:35.281: WARN/System.err(295):     at SQLite.JDBCDriver.connect(JDBCDriver.java:83)
10-22 11:08:35.281: WARN/System.err(295):     at java.sql.DriverManager.getConnection(DriverManager.java:191)
10-22 11:08:35.291: WARN/System.err(295):     at java.sql.DriverManager.getConnection(DriverManager.java:154)
10-22 11:08:35.291: WARN/System.err(295):     at db_connection.Conn_db.<init>(Conn_db.java:49)

Leider funzt es nicht wie ich es gern hätte, würde mich auf nützliche Tipps sehr freuen!

Viele Grüße
 
> DriverManager.getConnection("jdbc:sqlite:/assets/datenbank.sqlite");
Das "/assets/datenbank.sqlite" kann in keinem Fall funktionieren - mit dem "leading" / bewegst du dich ja ins Root-Verzeichnis - und da gibts bestimmt keinen "assets" Ordner...

Ne Anleitung findest du z.B. hier.
Wenn deine Datenbank größer als 1MB ist, dann kopier sie in den "raw" Ordner und gib ihr eine Dateinamenerweiterung, die auf komprimierten Inhalt hindeutet. Also z.B. "meinedatenbank.jpg" oder .jet - denn sonst meckert Android, dass unkomprimierte Inhalte über 1MB nicht erlaubt sind.
 
  • Danke
Reaktionen: jWoz
Hi Sixi,

danke für den schnellen Tipp! Ich habe nun den Ordner "raw" in res erstellt und mit einer Dateinanemerweiterung ergänzt.
Den Code habe ich entsprechend angepasst und bekomme aber leider folgende Fehlermeldung:#

Code:
Class.forName("SQLite.JDBCDriver");
DriverManager.getConnection("jdbc:sqlite:res/raw/datenbank.sqlite");

10-22 11:47:11.961: WARN/System.err(299): java.sql.SQLException: No suitable driver
10-22 11:47:12.001: WARN/System.err(299):     at java.sql.DriverManager.getConnection(DriverManager.java:199)
10-22 11:47:12.011: WARN/System.err(299):     at java.sql.DriverManager.getConnection(DriverManager.java:154)
10-22 11:47:12.011: WARN/System.err(299):     at db_connection.Conn_db.<init>(Conn_db.java:49)

Hättest du vielleicht eine weitere Idee ?

Viele Grüße
 
Das sind die beiden Klassen, die ich benutze um die Datenbankverbindung aufzubauen.


Activity
Code:
import ce.ge.play.DB;
import ce.ge.play.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Z2Activity extends Activity {
   
	Button button1;
	TextView input1;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final String meineNull="0";
        button1=(Button)findViewById(R.id.button1);
        input1=(TextView)findViewById(R.id.editText1);
        button1.setOnClickListener((OnClickListener) this);
        input1.setText(meineNull);
    }
    public void onClick(View v) {
    	
    	DB d = new DB();
    	try {
			d.openDataBase();
		} catch (Exception e) {
			e.printStackTrace();
		}
		input1.setText("Datenbankverbindung wurde aufgebaut");
    }
}


Datenbankverbindung:
Code:
import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DB  {
	    private static String DB_PATH = "assets/";
	    private static String DB_NAME = "Daten.sqlite";
	    private SQLiteDatabase myDataBase;
	
	    	 
	        public void openDataBase() throws SQLException{
	        	 
	        	//Open the database
	            String myPath = DB_PATH + DB_NAME;
	        	myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

	        }
}

Freue mich auf Tipps,
viele Grüße
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.666
Sempervivum
S
D
  • djsnoopy
Antworten
6
Aufrufe
616
djsnoopy
D
S
Antworten
8
Aufrufe
511
swa00
swa00
Zurück
Oben Unten