2017-11-05 14 views
0

にsqliteのテーブルを作成することができません。だから私は、私は、私のデータを格納し、それを引き出し、それを操作し、後ろにそれを突き出すことができるようにアンドロイドにSQLiteのテーブルのセットを作成しようとしてるアンドロイド

エラー私は実行中です:

android.database.sqlite.SQLiteException: no such table: units (code 1): , while compiling: SELECT * FROM units 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318) 
     at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1257) 
     at au.edu.murdoch.ict376.universityquest.helpers.DBHelper.getAllUnits(DBHelper.java:787) 
     at au.edu.murdoch.ict376.universityquest.fragments.SettingsFragment.onCreateView(SettingsFragment.java:54) 
     at android.app.Fragment.performCreateView(Fragment.java:2353) 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:995) 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171) 
     at android.app.BackStackRecord.run(BackStackRecord.java:816) 
     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1578) 
     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:483) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6119) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

そして私はそれを修正しようとしました。私はどこに間違っているのか分からない。

ここに私のDBHelperのonCreateコードです:

public class DBHelper extends SQLiteOpenHelper { 
    // Array divider 
    private static final String ARRAY_DIVIDER = "vyo6vj50fdbv"; 

    // The database name 
    private static final String DATABASE_NAME = "UniQuest.db"; 

    // The table "notes" 
    private static final String NOTES_TABLE_NAME = "notes"; 
    private static final String NOTES_COLUMN_ID = "id"; 
    private static final String NOTES_COLUMN_TITLE = "title"; 
    private static final String NOTES_COLUMN_DATE = "date"; 
    private static final String NOTES_COLUMN_TEXT = "text"; 

    // The table "tasks" 
    private static final String TASKS_TABLE_NAME = "tasks"; 
    private static final String TASKS_COLUMN_ID = "id"; 
    private static final String TASKS_COLUMN_TITLE = "title"; 
    private static final String TASKS_COLUMN_DATE = "date"; 
    private static final String TASKS_COLUMN_TEXT = "text"; 
    private static final String TASKS_COLUMN_COMPLETED = "completed"; 

    // The table "assignments" 
    private static final String ASSIGNMENTS_TABLE_NAME = "assignments"; 
    private static final String ASSIGNMENTS_COLUMN_ID = "id"; 
    private static final String ASSIGNMENTS_COLUMN_TITLE = "title"; 
    private static final String ASSIGNMENTS_COLUMN_DUEDATE = "duedate"; 
    private static final String ASSIGNMENTS_COLUMN_TASKS = "tasks"; 
    private static final String ASSIGNMENTS_COLUMN_COMPLETED = "completed"; 

    // The table "achievements" 
    private static final String ACHIEVEMENTS_TABLE_NAME = "notes"; 
    private static final String ACHIEVEMENTS_COLUMN_ID = "id"; 
    private static final String ACHIEVEMENTS_COLUMN_TITLE = "title"; 
    private static final String ACHIEVEMENTS_COLUMN_CRITERIA = "criteria"; 
    private static final String ACHIEVEMENTS_COLUMN_COMPLETED = "completed"; 

    // The table "classes" 
    private static final String TUTES_TABLE_NAME = "classes"; 
    private static final String TUTES_COLUMN_ID = "id"; 
    private static final String TUTES_COLUMN_TITLE = "title"; 
    private static final String TUTES_COLUMN_DAY = "day"; 
    private static final String TUTES_COLUMN_TIME = "time"; 
    private static final String TUTES_COLUMN_TYPE = "type"; 
    private static final String TUTES_COLUMN_LOCATION = "location"; 

    // The table "grades" 
    private static final String GRADES_TABLE_NAME = "grades"; 
    private static final String GRADES_COLUMN_ID = "id"; 
    private static final String GRADES_COLUMN_UNIT = "unit"; 
    private static final String GRADES_COLUMN_GRADE = "grade"; 

    // The table "units" 
    private static final String UNITS_TABLE_NAME = "units"; 
    private static final String UNITS_COLUMN_ID = "id"; 
    private static final String UNITS_COLUMN_UNIT = "unit"; 
    private static final String UNITS_COLUMN_MARKID = "markid"; 

    // The table "marks" 
    private static final String MARKS_TABLE_NAME = "marks"; 
    private static final String MARKS_COLUMN_ID = "id"; 
    private static final String MARKS_COLUMN_TASK = "task"; 
    private static final String MARKS_COLUMN_TYPE = "type"; 
    private static final String MARKS_COLUMN_WEIGHT = "weight"; 
    private static final String MARKS_COLUMN_GRADE = "grade"; 
    private static final String MARKS_COLUMN_UNITID = "unitid"; 

    public DBHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // Creating the tables 
     db.execSQL(
       "create table " + NOTES_TABLE_NAME + "(" + 
         NOTES_COLUMN_ID + " integer primary key autoincrement, " + 
         NOTES_COLUMN_TITLE + " text, " + 
         NOTES_COLUMN_DATE + " text, " + 
         NOTES_COLUMN_TEXT + " text);" + 

         "create table " + TASKS_TABLE_NAME + "(" + 
         TASKS_COLUMN_ID + " integer primary key autoincrement, " + 
         TASKS_COLUMN_TITLE + " text, " + 
         TASKS_COLUMN_DATE + " text, " + 
         TASKS_COLUMN_TEXT + " text, " + 
         TASKS_COLUMN_COMPLETED + " text);" + 

         "create table " + ASSIGNMENTS_TABLE_NAME + "(" + 
         ASSIGNMENTS_COLUMN_ID + " integer primary key autoincrement, " + 
         ASSIGNMENTS_COLUMN_TITLE + " text, " + 
         ASSIGNMENTS_COLUMN_DUEDATE + " text, " + 
         ASSIGNMENTS_COLUMN_TASKS + " text, " + 
         ASSIGNMENTS_COLUMN_COMPLETED + " text);" + 

         "create table " + ACHIEVEMENTS_TABLE_NAME + "(" + 
         ACHIEVEMENTS_COLUMN_ID + " integer primary key autoincrement, " + 
         ACHIEVEMENTS_COLUMN_TITLE + " text, " + 
         ACHIEVEMENTS_COLUMN_CRITERIA + " text, " + 
         ACHIEVEMENTS_COLUMN_COMPLETED + " text);" + 

         "create table " + TUTES_TABLE_NAME + "(" + 
         TUTES_COLUMN_ID + " integer primary key autoincrement, " + 
         TUTES_COLUMN_TITLE + " text, " + 
         TUTES_COLUMN_DAY + " text, " + 
         TUTES_COLUMN_TIME + " text, " + 
         TUTES_COLUMN_TYPE + " text, " + 
         TUTES_COLUMN_LOCATION + " text);" + 

         "create table " + GRADES_TABLE_NAME + "(" + 
         GRADES_COLUMN_ID + " integer primary key autoincrement, " + 
         GRADES_COLUMN_UNIT + " text, " + 
         GRADES_COLUMN_GRADE + " text);" + 

         "create table " + UNITS_TABLE_NAME + "(" + 
         UNITS_COLUMN_ID + " integer primary key autoincrement, " + 
         UNITS_COLUMN_UNIT + " text, " + 
         UNITS_COLUMN_MARKID + " text);" + 

         "create table " + MARKS_TABLE_NAME + "(" + 
         MARKS_COLUMN_ID + " integer primary key autoincrement, " + 
         MARKS_COLUMN_TASK + " text, " + 
         MARKS_COLUMN_TYPE + " text, " + 
         MARKS_COLUMN_WEIGHT + " text, " + 
         MARKS_COLUMN_GRADE + " text, " + 
         MARKS_COLUMN_UNITID + " text);" 
     ); 
    } 

そして、これは私が私のフラグメントに呼び出そうとしてる方法です:

public List<Unit> getAllUnits() { 
     List<Unit> units = new LinkedList<Unit>(); 

     String query = "SELECT * FROM " + UNITS_TABLE_NAME; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(query, null); 

     Unit unit = null; 
     if (cursor.moveToFirst()) { 
      do { 
       unit = new Unit(); 
       unit.setId(Integer.parseInt(cursor.getString(0))); 
       unit.setUnit(cursor.getString(1)); 
       unit.setMarks(Integer.parseInt(cursor.getString(2))); 

       units.add(unit); 
      } while (cursor.moveToNext()); 
     } 

     return units; 
    } 

は、「テーブルが上がらない理由を私は理解できません作成すると、私は1時間それを注いできました。

答えて

1

execSQL()は、入力の最後で停止する単一のクエリまたは最初の;のみを実行します。

; - 分離したクエリを複数のexecSQL()コールに分割します。 onCreate()を再度実行するには、アプリケーションをアンインストールしてデータを消去します。

関連する問題

 関連する問題