2014-01-08 2 views
0

을 .. 표시되지열은 존재하지만 나는 다음과 같은 데이터베이스를 만든

public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL("create table ITEMS(ROW_ID integer primary key autoincrement,ITEM_DESCRIPTION text,ITEM_AMOUNT integer," + 
      "time DATETIME DEFAULT CURRENT_DATE);"); 
    db.execSQL("create table payments(PAY_ID integer primary key autoincrement,PAY_DESC text,PAY_AMT integer,date DATETIME DEFAULT CURRENT_DATE);"); 
} 

내가 지불 테이블 항목

public Cursor getPayments(){ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor c=db.rawQuery("select * from " + KEY_PTABLE, null); 
    for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
     c.getColumnIndexOrThrow("pay_id"); 
    } 
    return c; 
} 

를 검색하기 위해 다음과 같은 기능을 사용하고과 로그 캣이 showing--입니다

AndroidRuntime(30868): FATAL EXCEPTION: main 
**AndroidRuntime(30868): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.expensesdatabase/com.example.expensesdatabase.PayView}: java.lang.IllegalArgumentException: column 'pay_id' does not exist** 
AndroidRuntime(30868): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
AndroidRuntime(30868): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
AndroidRuntime(30868): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
AndroidRuntime(30868): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
AndroidRuntime(30868): at android.os.Handler.dispatchMessage(Handler.java:99) 
AndroidRuntime(30868): at android.os.Looper.loop(Looper.java:137) 
AndroidRuntime(30868): at android.app.ActivityThread.main(ActivityThread.java:4424) 
AndroidRuntime(30868): at java.lang.reflect.Method.invokeNative(Native Method) 
AndroidRuntime(30868): at java.lang.reflect.Method.invoke(Method.java:511) 
AndroidRuntime(30868): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
AndroidRuntime(30868): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
AndroidRuntime(30868): at dalvik.system.NativeStart.main(Native Method) 
**AndroidRuntime(30868): Caused by: java.lang.IllegalArgumentException: column 'pay_id' does not exist** 
AndroidRuntime(30868): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:267) 
AndroidRuntime(30868): at com.example.expensesdatabase.MySQLiteHelper.getPayments(MySQLiteHelper.java:152) 
+0

'KEY_PTABLE'은 무엇입니까? – laalto

+0

테이블 이름 .. 지급액입니다 – droidX

+0

해당 필드가 상수로 정의되어 있습니까? –

답변

0

onCreate() 다시 호출되는 그래서 이전 데이터베이스 파일을 삭제 :

이보십시오.

1

PAY_IDpay_id

과 동일하지 않습니다.

올바른 케이스를 사용해야합니다.

+0

나는 변화하는 경우도 시도했다. 그러나 오류는 여전히 동일했습니다 – droidX

+0

동일한'열 'pay_id'가 존재하지 않습니다'오류가 있습니까? – MillaresRoo

0

PAY_ID을 이와 같이 대문자로 작성하십시오.

c.getColumnIndexOrThrow("PAY_ID"); 

또한 오류가 열이 존재하지 않음을 시사

Cursor c=db.rawQuery("select * from payments", null); 
+0

또한 'Cursor c = db.rawQuery ("select * from payments", null);' – GrIsHu

+0

으로 쿼리를 변경하면 주석 대신 대답으로 쓰지 않으시겠습니까? – Kitkat

+0

업데이트 준비가 끝나기를 기다리고 있습니다. 내 인터넷이 느리게 작동합니다. @Kitkat – GrIsHu

0

로 쿼리를 변경할 수 있습니다. 최근 테이블 스키마를 변경 한 경우,

public Cursor getPayments(){ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor c=db.query("payments", null, null, null, null, null, null); 
    while(c.moveToNext()) 
    { 
     // You can log the recieved data 
     // Log.i("PAY_ID",c.getString(c.getString(c.getColumnIndex("PAY_ID")))); 
    } 
    return c; 
} 
관련 문제