2017-05-16 26 views
0

Ich arbeite an einem Android-Projekt, während ich versuche, die Datenbank zu erstellen, es scheint, dass ich etwas falsch habe, das ist mein Code, der eine Datenbank mit mehreren Tabellen erstellen soll, aber es doesn ' t schaffen jeden Tisch, hilf mir gefälligst hier den Fehler finden :)Kann nicht android sqlite DB

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

public class DataBase extends SQLiteOpenHelper { 
public static final String DATABASE_NAME = "StudyLife"; 
public static final String Table_Subject = "Subject"; 
public static final String sub_col1 = "ID"; 
public static final String sub_col2 = "Name"; 
public static final String sub_col3 = "NumOfHours"; 
//Table Class 
public static final String Table_Class ="Class"; 
public static final String class_Col1 = "ID"; 
public static final String class_col2 = "Name"; 
public static final String class_Col3 = "Subject_ID"; 
public static final String class_Col4 = "Minutes "; 
public static final String Class_Col5 = "Hours"; 
public static final String class_Col6 = "Date"; 
public static final String class_Col7 = "location"; 
public static final String class_Col8 = "Type"; 
//Table Tasks && Exams 
public static final String Table_Tasks ="Tasks"; 
public static final String Task_col1 ="ID"; 
public static final String Task_col2 ="Name"; 
public static final String Task_col3 ="Subject_ID"; 
public static final String Task_col4 ="Deadline"; 
public static final String Task_col5 ="Type";//Bool To Exam OR Task 

public DataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME,null, 1); 
} 


@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + "("+DataBase.sub_col1+" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ," 
      + DataBase.sub_col2 + "TEXT NOT NULL ," + 
       DataBase.sub_col3+" INTEGER)"); 


    db.execSQL("CREATE TABLE "+DataBase.Table_Tasks+"("+DataBase.Task_col1+"INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + 
      DataBase.Task_col2+ "TEXT," + 
      DataBase.Task_col3+"INTEGER NOT NULL," + 
      DataBase.Task_col4+ "INTEGER," + 
      DataBase.Task_col5+ "INTEGER)"); 
    db.execSQL("CREATE TABLE "+DataBase.Table_Class+ "("+DataBase.class_Col1+" INTEGER PRIMARY KEY AUTOINCREMENT," + 
      DataBase.class_col2+"TEXT," + 
      DataBase.class_Col3+"INTEGER," + 
      DataBase.class_Col4+"TEXT," + 
      DataBase.Class_Col5+"TEXT,"+ 
      DataBase.class_Col6+"TEXT," + 
      DataBase.class_Col7+"TEXT," + 
      DataBase.class_Col8+"TEXT)"); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL(" DROP TABLE IF EXISTS Subject "); 
    db.execSQL(" DROP TABLE IF EXISTS Class"); 
    db.execSQL(" DROP TABLE IF EXISTS Tasks"); 
    onCreate(db); 

}} 

das ist, was ich nach dem Lauf in logcat raus

05-16 10: 55: 02.407 17.033 bis 17.033 /? D/Android Runtime: >>>>>> Android Runtime START com.android.internal.os.RuntimeInit < < < < < < 05-16 10: 55: 02.423 17.033 bis 17.033 /? D/AndroidRuntime: CheckJNI ist AUS 05-16 10: 55: 02.443 17033-17033 /? D/dalvikvm: Versuchen lib libjavacore.so 0x0 05-16 10: 55: 02.443 17033-17033 /? D/dalvikvm: Gemeinsame Lib hinzugefügt libjavacore.so 0x0 05-16 10: 55: 02.451 17033-17033 /? D/dalvikvm: Versuchen lib libativativhelper.so 0x0 05-16 10: 55: 02.455 17033-17033 /? D/dalvikvm: Shared Lib hinzugefügt libnativehelper.so 0x0 05-16 10: 55: 02.455 17033-17033 /? D/dalvikvm: Nein JNI_OnLoad gefunden in libnativehelper.so 0x0, überspringen init 05-16 10: 55: 02.499 1282-1288 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.499 1282-1288 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.527 772-778 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.527 772-778 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.555 1480-1486 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.559 1480-1486 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.579 17033-17033 /? D/dalvikvm: Hinweis: Klasse Landroid/app/ActivityManagerNative; hat 179 nicht implementierte (abstrakte) Methoden 05-16 10: 55: 02.595 1512-1516 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.595 1512-1516 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.623 17033-17040 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.647 1546-1550 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.659 1546-1550 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.683 818-824 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.687 818-824 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.711 788-794 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.731 788-794 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.735 885-890 /? I/jdwp: Ignorieren zweiten Debugger - akzeptieren und löschen 05-16 10: 55: 02.743 885-890 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.763 695-701 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.775 695-701 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.823 1207-1213 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.823 1207-1213 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.851 16791-16797 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.851 1529-1534 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.883 1529-1534 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.883 1498-1504 /?I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.927 1498-1504 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.931 1051-1057 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.939 1051-1057 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.955 637-643 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.979 637-643 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 02.979 830-837 /? I/jdwp: Ignorieren zweiten Debugger - akzeptieren und löschen 05-16 10: 55: 02.999 830-837 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.023 17033-17033 /? E/memtrack: Konnte das memtrack Modul nicht laden (Keine solche Datei oder Verzeichnis) 05-16 10: 55: 03.023 17033-17033 /? E/android.os.Debug: Fehler beim Laden des Memtrack-Moduls: -2 05-16 10: 55: 03.139 17033-17033 /? D/AndroidRuntime: Aufruf des Haupteintrags com.android.commands.pm.Pm 05-16 10: 55: 03.187 17033-17033 /? D/AndroidRuntime: Herunterfahren der VM 05-16 10: 55: 03.191 17033-17040 /? D/jdwp: Haben Sie ein Wecksignal, aus dem 05-16 10: 55: 03.195 17033-17040 /? D/dalvikvm: Debugger hat sich getrennt; Objekt-Registrierung hatte 1 Einträge 05-16 10: 55: 03.223 1282-1288 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.239 1282-1288 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.247 772-778 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.283 1480-1486 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.283 772-778 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.323 1512-1516 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.335 1480-1486 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.343 1546-1550 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.359 1512-1516 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.387 818-824 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.395 1546-1550 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.431 788-794 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.431 818-824 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.475 885-890 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.491 788-794 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.679 695-701 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.755 885-890 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.755 1207-1213 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.827 695-701 /? I/jdwp: Ignorieren zweiten Debugger - akzeptieren und löschen 05-16 10: 55: 03.831 1529-1534 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.871 1207-1213 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.891 1498-1504 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.903 16791-16797 /? I/jdwp: Ignorieren zweiten Debugger - akzeptieren und löschen 05-16 10: 55: 03.919 1051-1057 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 03.939 1529-1534 /? I/jdwp: Ignorieren zweiten Debugger - akzeptieren und löschen 05-16 10: 55: 03.939 637-643 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 04.007 830-837 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 04.007 1498-1504 /?I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 04.071 1051-1057 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 04.087 637-643 /? I/jdwp: Ignorieren zweiten Debugger - Akzeptieren und Löschen 05-16 10: 55: 04.107 830-837 /? I/jdwp: Ignorieren des zweiten Debuggers - Akzeptieren und Löschen

+2

Können Sie den Logcat-Fehler hier posten? Wenn ich mir den Code anschaue, denke ich nur daran, zwischen dem Tabellennamen und dem ersten '(' in Ihrer 'CREATE TABLE'-Anweisung ein Leerzeichen zu setzen.) –

+2

* Jede Frage *, die ein * enthält, zeigt einen Fehler an * oder ähnliche muss sagen, was der Fehler ist – Denny

+0

fehlende Leerzeichen, überprüfen Sie die verketteten Strings –

Antwort

0

Nur eine Vermutung, da Sie das Logcat nicht veröffentlicht haben, aber ich denke, dass Sie ein Leerzeichen zwischen dem Tabellennamen und der ersten offenen Klammer benötigen. So zum Beispiel:

db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + " (" + 
     DataBase.sub_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + 
     DataBase.sub_col2 + " TEXT NOT NULL," + 
     DataBase.sub_col3 + " INTEGER)" 
    ); 

db.execSQL("CREATE TABLE " + DataBase.Table_Tasks + " (" + 
     DataBase.Task_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + 
     DataBase.Task_col2 + " TEXT," + 
     DataBase.Task_col3 + " INTEGER NOT NULL," + 
     DataBase.Task_col4 + " INTEGER," + 
     DataBase.Task_col5 + " INTEGER)" 
    ); 

db.execSQL("CREATE TABLE " + DataBase.Table_Class + " (" + 
     DataBase.class_Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
     DataBase.class_col2 + " TEXT," + 
     DataBase.class_Col3 + " INTEGER," + 
     DataBase.class_Col4 + " TEXT," + 
     DataBase.class_Col5 + " TEXT," + 
     DataBase.class_Col6 + " TEXT," + 
     DataBase.class_Col7 + " TEXT," + 
     DataBase.class_Col8 + " TEXT)" 
    ); 

EDIT: auch festgestellt, dass Sie nicht konsequent Leerzeichen nach dem Feldnamen zu addieren. Bitte dumpen Sie alle Ihrer CREATE TABLE Anweisungen zu logcat, und versuchen Sie, Ihre Anweisungen wie oben zu kodieren, damit es einfacher ist, Verkettungsfehler aufzuheben.

+0

Ich habe meinen Code bearbeitet, aber es funktioniert immer noch nicht k –

+0

Wie funktioniert es nicht? Kannst du den Logcat mit dem oben angegebenen Rat aufnehmen? (d. h., finde die Zeile, die 'Caused By' enthält) –

+0

Auch für' class_Col4' - entferne das Leerzeichen am Ende von '" Minutes "' –

0
db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + " ("+DataBase.sub_col1 +" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " 
     + DataBase.sub_col2 + " TEXT NOT NULL, " + 
      DataBase.sub_col3 + " INTEGER);"); 


    db.execSQL("CREATE TABLE "+ DataBase.Table_Tasks + " ("+DataBase.Task_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + 
     DataBase.Task_col2 + " TEXT, " + 
     DataBase.Task_col3 + " INTEGER NOT NULL, " + 
     DataBase.Task_col4 + " INTEGER, " + 
     DataBase.Task_col5 + " INTEGER);"); 

db.execSQL("CREATE TABLE " + DataBase.Table_Class + " ("+DataBase.class_Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
     DataBase.class_col2 + " TEXT, " + 
     DataBase.class_Col3 + " INTEGER, " + 
     DataBase.class_Col4 + " TEXT, " + 
     DataBase.Class_Col5 + " TEXT, "+ 
     DataBase.class_Col6 + " TEXT, " + 
     DataBase.class_Col7 + " TEXT, " + 
     DataBase.class_Col8 + " TEXT);"); 

Ich hoffe, das funktioniert. Nein; am Ende der SQL-Anweisung und auch keine Leerzeichen nach dem Spaltennamen und vor dem Datentyp.

Da es keine Logcat Informationen gibt, wenn oncreate() aufgerufen wird, sollte dieser Code funktionieren. Wenn dies nicht funktioniert, lassen Sie mich wissen, ob onCreate() aufgerufen wird oder nicht, indem Sie Protokolle hinzufügen.

Verwandte Themen