| |||||||
Das Thema "Datenbank im Ordner assets?" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Benutzer Registriert seit: 22.10.2011
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
| 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) Viele Grüße |
| | |
| | #2 (permalink) |
| Erfahrener Benutzer Modell: G1 DevPhone / SGS2 / SGT10.1v Registriert seit: 20.01.2009
Beiträge: 238
Abgegebene Danke: 7
Erhielt 50 Danke für 47 Beiträge
|
> 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. |
| | |
| Folgender Benutzer bedankt sich bei sixi für diesen Beitrag: | jWoz (24.10.2011) |
| | #3 (permalink) |
| Neuer Benutzer Registriert seit: 22.10.2011
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
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) Viele Grüße |
| | |
| | #4 (permalink) |
| Neuer Benutzer Registriert seit: 22.10.2011
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
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);
}
} viele Grüße |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| 3. Sets scripts assets: ENABLED?!...find ich nicht | thrash001 | Root / Hacking / Modding für Sony Ericsson Xperia Arc | 4 | 12.08.2011 11:13 |
| Mehre Daten in SQL-Datenbank| einzelne Zeile aus Datenbank löschen | Nivel | Android App Entwicklung | 17 | 23.07.2011 13:41 |
| SQlite : Datenbank verschlüsselt oder keine gültige Datenbank | RED-BARON | Android App Entwicklung | 0 | 07.04.2011 11:20 |
| Musikplayer - bestimmte Ordner sollen nicht in Datenbank aufgenommen werden | JuppCappellmann | Motorola Defy Forum | 1 | 22.11.2010 22:46 |
| mit assets Ordner arbeiten | jim | Android App Entwicklung | 3 | 12.08.2010 16:28 |