2016-06-22 2 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

차이점은 무엇입니까? –

관련 문제