2016-06-22 7 views
0

私は保険カードを保存できるアプリを書いています。ユーザーが情報を入力し、データベースに保存されています。アプリは以前のインシデントのリストで起動します。これが問題の発生場所です。それは私に "driverone"の列が存在しないことを伝えています。SQLiteが列が存在しないことを伝えています

私はプログラミングが新しく、SQLiteは非常に新しいので、すべてのアドバイスは大歓迎です。私はこのトピックがここまで来ていることを知っています。私はその回答を検索して、何が起こっているのか把握できません。ここで

は、私は私のデータベースを定義するコードです:私は私のデータベースを作成する場所

public class DbSchema { 
    public static final class CrashTable { 
     public static final String NAME = "crash"; 

     public static final class Cols { 
      public static final String UUID = "uuid"; 
      //TODO: "column 'driverone' does not exist...fix it 
      public static final String DRIVER_ONE = "driverone"; 
      public static final String INSCO = "insco"; 
      public static final String POLICY = "policy"; 
      public static final String PHONE = "phone"; 
      public static final String EMAIL = "email"; 

      //public static final String DRIVER_TWO = "driver_two"; 
      //public static final String INSURANCECOMPANY_TWO = "insurancecompany_two"; 
      //public static final String POLICYNUMBER_TWO = "policynumber_two"; 
      //public static final String TELEPHONENUMBER_TWO = "telephonenumber_two"; 
      //public static final String EMAILADDRESS_TWO = "emailaddress_two"; 

      //public static final String DATE = "date"; 

     } 
    } 
} 

そして、ここです:

private static final String CRASH_TABLE_CREATE_STATEMENT = "create table " + CrashTable.NAME + "(" + 
     " _id integer primary key autoincrement, " + 
     CrashTable.Cols.UUID + ", " + 
     //CrashTable.Cols.ID + " integer primary key autoincrement, " + 
     CrashTable.Cols.DRIVER_ONE + ", " + 
     CrashTable.Cols.INSCO + ", " + 
     CrashTable.Cols.POLICY + ", " + 
     CrashTable.Cols.PHONE + ", " + 
     CrashTable.Cols.EMAIL + ", " + 
     ");"; 

し、エラーが発生した場所です。

public class CrashCursorWrapper extends CursorWrapper{ 
    public CrashCursorWrapper(Cursor cursor) { 
     super(cursor); 
    } 

    public Crash getCrash() { 
     String uuidString = getString(getColumnIndexOrThrow(CrashTable.Cols.UUID)); 
     String driverone = getString(getColumnIndexOrThrow(CrashTable.Cols.DRIVER_ONE)); <------ Error here 
     String insco = getString(getColumnIndexOrThrow(CrashTable.Cols.INSCO)); 
     String policy = getString(getColumnIndexOrThrow(CrashTable.Cols.POLICY)); 
     String phone = getString(getColumnIndexOrThrow(CrashTable.Cols.PHONE)); 
     String email = getString(getColumnIndexOrThrow(CrashTable.Cols.EMAIL)); 

     //String theirName = getString(getColumnIndex(CrashTable.Cols.DRIVER_TWO)); 
     //String theirInsCo = getString(getColumnIndex(CrashTable.Cols.INSURANCECOMPANY_TWO)); 
     //String theirPolicy = getString(getColumnIndex(CrashTable.Cols.POLICYNUMBER_TWO)); 
     //String theirTelephone = getString(getColumnIndex(CrashTable.Cols.TELEPHONENUMBER_TWO)); 
     //String theirEmail = getString(getColumnIndex(CrashTable.Cols.EMAILADDRESS_TWO)); 
     //long date = getLong(getColumnIndex(CrashTable.Cols.DATE)); 

     Crash crash = new Crash(UUID.fromString(uuidString)); 
     crash.setYourName(driverone); 
     crash.setInsCo(insco); 
     crash.setPolicy(policy); 
     crash.setTelephone(phone); 
     crash.setEmail(email); 

     //crash.setTheirName(theirName); 
     //crash.setInsCo_Two(theirInsCo); 
     //crash.setPolicy_Two(theirPolicy); 
     //crash.setTelephone_Two(theirTelephone); 
     //crash.setEmail_Two(theirEmail); 

     // crash.setDate(new Date(date)); 

     return crash; 
    } 
} 

参考のために私のログです:

06-22 10:59:49.645 31983-31983/com.bignerdranch.android.crashcourse E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.bignerdranch.android.crashcourse, PID: 31983 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bignerdranch.android.crashcourse/com.bignerdranch.android.crashcourse.CrashListActivity}: java.lang.IllegalArgumentException: column 'driverone' does not exist 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: java.lang.IllegalArgumentException: column 'driverone' does not exist 
     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333) 
     at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:87) 
     at com.bignerdranch.android.crashcourse.database.CrashCursorWrapper.getCrash(CrashCursorWrapper.java:21) 
     at com.bignerdranch.android.crashcourse.CrashShop.getCrashes(CrashShop.java:53) 
     at com.bignerdranch.android.crashcourse.CrashListFragment.updateUI(CrashListFragment.java:110) 
     at com.bignerdranch.android.crashcourse.CrashListFragment.onCreateView(CrashListFragment.java:46) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1988) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:754) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1653) 
     at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:364) 
     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602) 
     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 
     at android.app.Activity.performStart(Activity.java:6253) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

'CREATE'ステートメントでエラーがスローされる(末尾のカンマ「CrashTable.Cols.EMAIL +」、「+」を削除します) – antonio

答えて

0

テーブルを作成するときは、最後の属性の後にコンマを入れてはいけません。これはあなたのケースのEMAILです。

また、PRINARY KEYに既に含まれているため、AUTOINCREMENTはSQLiteでは無用です。

+0

のため、カラムを追加してテーブルの古いバージョンで作業しているようです私はそれを試みたが、まだ何もしなかった。しかし、修正する必要があったので、ありがとう! – kblank85

+0

'AUTOINCREMENT'は違いを生み出しますが、通常は避けてください。 – tynn

+0

違いは何ですか? –

関連する問題