2017-05-16 43 views
0

私は何かが間違っているように見えるデータベースを作成しようとしている間にアンドロイドプロジェクトに取り組んでいます。それは複数のテーブルでデータベースを作成すると仮定していますが、トン任意のテーブルを作成し、親切に私はここでエラーを見つける:)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); 

}} 

これは私が実行

5月16日10後logcatに出るものです助け:55:02.407 17033から17033 /? D/AndroidRuntime:>>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit < < < < < < 5月16日10:55:02.423 17033から17033 /? D/AndroidRuntime:CheckJNIはオフです 05-16 10:55:02.443 17033-17033 /? D/dalvikvm:libjavacore.soを読み込もうとしています0x0 05-16 10:55:02.443 17033-17033 /? D/dalvikvm:共有ライブラリlibjavacore.soを追加しました。0x0 05-16 10:55:02.451 17033-17033 /? D/dalvikvm:libnをロードしようとしています。libnativehelper.so 0x0 05-16 10:55:02.455 17033-17033 /? D/dalvikvm:共有ライブラリlibnativehelper.soを追加しました。0x0 05-16 10:55:02.455 17033-17033 /? D/dalvikvm:libnativehelper.so 0x0にJNI_OnLoadが見つかりません。 05-16 10:55:02.499 1282-1288 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.499 1282-1288 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.527 772-778 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.527 772-778 /? I/jdwp:2番目のデバッガを無視する - 受け入れおよび破棄 05-16 10:55:02.555 1480-1486 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.559 1480-1486 /? I/jdwp:2番目のデバッガを無視しています - 受け入れと破棄 05-16 10:55:02.579 17033-17033 /? D/dalvikvm:注意:クラスLandroid/app/ActivityManagerNative。 179実装されていない(抽象)メソッドを持っています 05-16 10:55:02.595 1512-1516 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.595 1512-1516 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.623 17033-17040 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.647 1546-1550 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.659 1546-1550 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.683 818-824 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.687 818-824 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.711 788-794 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.731 788-794 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.735 885-890 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.743 885-890 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.763 695-701 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.775 695-701 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.823 1207-1213 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.823 1207-1213 /? I/jdwp:2番目のデバッガを無視しています - 受け入れと破棄 05-16 10:55:02.851 16791-16797 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.851 1529-1534 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.883 1529-1534 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.883 1498-1504 /?I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.927 1498-1504 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.931 1051-1057 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.939 1051-1057 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.955 637-643 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.979 637-643 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.979 830-837 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:02.999 830-837 /? I/jdwp:2番目のデバッガを無視する - 受け入れおよび破棄 05-16 10:55:03.023 17033-17033 /? E/memtrack:memtrackモジュールを読み込めませんでした(このようなファイルやディレクトリはありません) 05-16 10:55:03.023 17033-17033 /? E/android.os.Debug:memtrackモジュールの読み込みに失敗しました:-2 05-16 10:55:03.139 17033-17033 /? D/AndroidRuntime:メインエントリーを呼び出すcom.android.commands.pm.Pm 05-16 10:55:03.187 17033-17033 /? D/AndroidRuntime:VMシャットダウン 05-16 10:55:03.191 17033-17040 /? D/jdwp:目覚まし信号があり、選択肢から外れる。 05-16 10:55:03.195 17033-17040 /? D/dalvikvm:デバッガが切り離されました。オブジェクトレジストリには1つのエントリがあります 05-16 10:55:03.223 1282-1288 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.239 1282-1288 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.247 772-778 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.283 1480-1486 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.283 772-778 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.323 1512-1516 /? I/jdwp:2番目のデバッガを無視する - 受け入れ、破棄 05-16 10:55:03.335 1480-1486 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.343 1546-1550 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.359 1512-1516 /? I/jdwp:2番目のデバッガを無視しています - 受け入れと破棄 05-16 10:55:03.387 818-824 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.395 1546-1550 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.431 788-794 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.431 818-824 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.475 885-890 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.491 788-794 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.679 695-701 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.755 885-890 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.755 1207-1213 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.827 695-701 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.831 1529-1534 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.871 1207-1213 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.891 1498-1504 /? I/jdwp:2番目のデバッガを無視する - 受け入れ、破棄 05-16 10:55:03.903 16791-16797 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.919 1051-1057 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.939 1529-1534 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:03.939 637-643 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:04.007 830-837 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:04.007 1498-1504 /?I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:04.071 1051-1057 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:04.087 637-643 /? I/jdwp:2番目のデバッガを無視する - 受け入れと破棄 05-16 10:55:04.107 830-837 /? I/jdwp:第2のデバッガを無視する - 受け入れとドロップする

+2

ここにlogcatエラーを投稿できますか?コードを見るだけで考えることができるのは、テーブル名と 'CREATE TABLE'ステートメントの'( ')の間にスペースを入れることです。 –

+2

*すべての質問*には「エラーが表示されます」*エラーが何であるかを言う必要があります – Denny

+0

空白がない場合、連結された文字列を確認してください –

答えて

0

あなたはlogcatを投稿していないので推測しますが、テーブル名と最初のカッコの間にスペースが必要です。例えばので:

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:はまた、あなたが一貫しすぎて自分のフィールド名の後にスペースを追加していないことを指摘しました。あなたのCREATE TABLE文のすべて文をlogcatにダンプし、上記のように文をきれいにコーディングして、連結エラーを取りやすくしてください。

+0

私のコードを編集しましたが、それでもまだうまくいきません。 k –

+0

どのように動作しませんか?あなたはlogcatを含めることができますか? (つまり、 'Caused By'を含む行を見つける) –

+0

' class_Col4'のために - '' 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);"); 

希望します。 いいえ。 SQLステートメントの終わりに、また、列名の後とデータ・タイプの前にスペースを入れないでください。

ログカット情報がないため、oncreate()が呼び出されると、このコードは機能します。これで問題が解決しない場合は、ログを追加してonCreate()が呼び出されているかどうかを教えてください。

関連する問題