Erstellen von Tabellen in der sqlite-Datenbank auf android
@Override public void onCreate(SQLiteDatabase db) { try{ db.execSQL("create table" + NotificationManager.getUserStatic(Kontext) + "log ("+ KEY_TIME +" INTEGER primary key, "+ KEY_TEXT +" TEXT not null);"); } catch (SQLException e) { e.printStackTrace(); } } /** * onOpen-Methode aufgerufen, wenn die app geöffnet wird. */ @Override public void onOpen(SQLiteDatabase db) { try{ System.aus.println("tophere"); db.execSQL("create table if not exists "+DATENBANKNAME+"." + NotificationManager.getUserStatic(Kontext) + "log ("+ KEY_TIME +" INTEGER primary key, "+ KEY_TEXT +" TEXT not null);"); System.aus.println("hier"); } catch (SQLException e){ e.printStackTrace(); } }
Haben wir diesen code zur Erstellung einer Datenbank für eine app. problem ist, soweit wir wissen, ist es nicht die Tabellen erstellen, so dass, wenn wir versuchen, in die Tabellen einfügen und aus Ihnen Lesen, stürzt es ab. wir haben alles versucht, das System.aus.println ' s sind dort zu sehen, wo es scheitert. wir bekommen die tophere aus, aber es wird nie zu dem hier Teil in das Protokoll, so sind wir erraten etwas, was es zu versäumen gibt. wir haben geprüft, mit DDMS, dass die Datenbank im richtigen Ordner, so dass die Datenbank sollte da sein, aber aus irgendeinem Grund kann es nicht finden(Zeile 2 und 3 in der log).
Irgendwelche Gedanken?
dies ist die Fehler melden:
04-27 10:45:46.768: I/System.(6441): tophere 04-27 10:45:46.772: ich/SqliteDatabaseCpp(6441): sqlite zurückgegeben: error code = 1, msg = unbekannter Datenbank-NOPO, db=/data/data/dmri.nopo/Datenbanken/NOPO 04-27 10:45:46.772: W/System.err(6441): android.Datenbank.sqlite.SQLiteException: unbekannter Datenbank-NOPO: , beim kompilieren: create table if not exists NOPO.log (time INTEGER primary key, text text not null); 04-27 10:45:46.792: W/System.err(6441): at android.Datenbank.sqlite.SQLiteCompiledSql.native_compile(Native-Methode) 04-27 10:45:46.792: W/System.err(6441): at android.Datenbank.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 04-27 10:45:46.811: W/System.err(6441): at android.Datenbank.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:134) 04-27 10:45:46.811: W/System.err(6441): at android.Datenbank.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 04-27 10:45:46.811: W/System.err(6441): at android.Datenbank.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260) 04-27 10:45:46.811: W/System.err(6441): at android.Datenbank.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84) 04-27 10:45:46.811: W/System.err(6441): at android.Datenbank.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899) 04-27 10:45:46.823: W/System.err(6441): at android.Datenbank.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839) 04-27 10:45:46.823: W/System.err(6441): bei dmri.nopo.DBAdapter$DatabaseHelper.onOpen(DBAdapter.java:67) 04-27 10:45:46.823: W/System.err(6441): at android.Datenbank.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:180) 04-27 10:45:46.902: W/System.err(6441): bei dmri.nopo.DBAdapter.open(DBAdapter.java:86) 04-27 10:45:46.912: W/System.err(6441): bei dmri.nopo.LogManager.readLogFile(LogManager.java:32) 04-27 10:45:46.912: W/System.err(6441): bei dmri.nopo.LogActivity.onCreate(LogActivity.java:25) 04-27 10:45:46.921: W/System.err(6441): at android.app.Aktivität.performCreate(Aktivität.java:4465) 04-27 10:45:46.921: W/System.err(6441): at android.app.Instrumentierung.callActivityOnCreate(Instrumentation.java:1049) 04-27 10:45:46.931: W/System.err(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-27 10:45:46.931: W/System.err(6441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-27 10:45:46.941: W/System.err(6441): at android.app.ActivityThread.Zugriff auf$600(ActivityThread.java:123) 04-27 10:45:46.941: W/System.err(6441): at android.app.ActivityThread$H. handleMessage(ActivityThread.java:1147) 04-27 10:45:46.953: W/System.err(6441): at android.os.Handler.dispatchMessage(Handler.java:99) 04-27 10:45:46.953: W/System.err(6441): at android.os.Looper.Loops(Looper.java:137) 04-27 10:45:46.972: W/System.err(6441): at android.app.ActivityThread.main(ActivityThread.java:4424) 04-27 10:45:46.972: W/System.err(6441): bei java.lang.reflektieren.Methode.invokeNative(Native-Methode) 04-27 10:45:46.972: W/System.err(6441): bei java.lang.reflektieren.Methode.invoke(Method.java:511) 04-27 10:45:46.982: W/System.err(6441): an com.android.intern.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-27 10:45:46.982: W/System.err(6441): an com.android.intern.os.ZygoteInit.main(ZygoteInit.java:551) 04-27 10:45:46.992: W/System.err(6441): bei dalvik.system.NativeStart.main(Native-Methode) 04-27 10:45:47.002: ich/SqliteDatabaseCpp(6441): sqlite zurückgegeben: error code = 1, msg = keine Tabelle: log, db=/data/data/dmri.nopo/Datenbanken/NOPO 04-27 10:45:47.012: D/AndroidRuntime(6441): das Herunterfahren der VM 04-27 10:45:47.012: W/dalvikvm(6441): threadid=1: thread beenden mit Ausnahme uncaught (Gruppe=0x409c01f8) 04-27 10:45:47.181: E/AndroidRuntime(6441): FATAL EXCEPTION: main 04-27 10:45:47.181: E/AndroidRuntime(6441): java.lang.RuntimeException: Unable to start activity ComponentInfo{dmri.nopo/dmri.nopo.LogActivity}: android.Datenbank.sqlite.SQLiteException: no such table: log: , beim kompilieren: WÄHLEN Sie die Zeit, den text AUS dem log 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.Zugriff auf$600(ActivityThread.java:123) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread$H. handleMessage(ActivityThread.java:1147) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.os.Handler.dispatchMessage(Handler.java:99) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.os.Looper.Loops(Looper.java:137) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.main(ActivityThread.java:4424) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei java.lang.reflektieren.Methode.invokeNative(Native-Methode) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei java.lang.reflektieren.Methode.invoke(Method.java:511) 04-27 10:45:47.181: E/AndroidRuntime(6441): an com.android.intern.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-27 10:45:47.181: E/AndroidRuntime(6441): an com.android.intern.os.ZygoteInit.main(ZygoteInit.java:551) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei dalvik.system.NativeStart.main(Native-Methode) 04-27 10:45:47.181: E/AndroidRuntime(6441): Verursacht durch: android.Datenbank.sqlite.SQLiteException: no such table: log: , beim kompilieren: WÄHLEN Sie die Zeit, den text AUS dem log 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteCompiledSql.native_compile(Native-Methode) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteProgram.(SQLiteProgram.java:127) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteProgram.(SQLiteProgram.java:94) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteQuery.(SQLiteQuery.java:53) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteDirectCursorDriver.Abfrage(SQLiteDirectCursorDriver.java:47) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteDatabase.Abfrage(SQLiteDatabase.java:1405) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.Datenbank.sqlite.SQLiteDatabase.Abfrage(SQLiteDatabase.java:1485) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei dmri.nopo.DBAdapter.getAllSMS(DBAdapter.java:116) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei dmri.nopo.LogManager.readLogFile(LogManager.java:34) 04-27 10:45:47.181: E/AndroidRuntime(6441): bei dmri.nopo.LogActivity.onCreate(LogActivity.java:25) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.Aktivität.performCreate(Aktivität.java:4465) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.Instrumentierung.callActivityOnCreate(Instrumentation.java:1049) 04-27 10:45:47.181: E/AndroidRuntime(6441): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-27 10:45:47.181: E/AndroidRuntime(6441): 11 mehr ...
InformationsquelleAutor Slayonie | 2012-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst würde ich empfehlen, mit android.util.Logbuch für die Protokollierung von exceptions in Android.
Zweite - ich vermute, Sie haben Tabellen mit falschen Namen erstellt. Dein Fehler sagt Abfrage nicht finden können, "log", aber ich sehe, Sie machen einige Verkettung in der "CREATE" - Anweisung. Das mag der Grund sein.
Können Sie überprüfen, was ist eigentlich für Sie erstellt. Durch die Anzeige der sqlite-Basis erstellt.
Können Sie versuchen:
adb shell
cd /data/data/<your.package.name>/databases
sqlite3 <yourdbname>
.tables
adb shell
soll ausgeführt werden, innerhalb von Android Studio, der von seinem terminal?Sie können mit jedem terminal, aber man muss naviage zu <sdk-Pfad " >/platform-tools vor der Ausführung adb-Befehle
InformationsquelleAutor EvilDuck
dies wird Ihnen helfen, ich habe es versucht und Ihre arbeiten auch
dies ist nur ein Beispiel
InformationsquelleAutor Goofy
Entfernen
DATABASE_NAME
Teil Ihrer SQL-Anweisungen.Wenn Sie wollen
NOPO
den Namen Ihrer Datenbank und möchten eine Tabelle erstellenlog
, dann:super(context, "NOPO", null, 2);
macht das DatabaseHelper Objekt nur in derNOPO
- Datenbank-Umgebung, so brauchen Sie nicht, geben Sie es in SQL.ps. Ich hardcode etwas, und Sie sollten es VERMEIDEN.
InformationsquelleAutor Dot Cink
public class LoginDataBaseAdapter
{
static final String DATABASE_NAME = "login.db";
InformationsquelleAutor Dhruv Panchani
InformationsquelleAutor Developer