2013-07-22 3 views
1

데이터베이스를 생성했습니다. 그러나 그것은 "나 같은 열 오류"를 제공합니다. SQLite Manager를 사용하여 데이터를 추가했기 때문에 데이터베이스에 coloumn이 있다고 확신합니다. 왜 그런 오류가 나는지 이해가 안됩니다. 나는이 질문을 여기서 찾았지만 대답은 절대로 도움이되지 못했다.안드로이드에서 이러한 열 오류가 없습니다 SQLite

는 답변의 대부분은이 코드를 작성하는 동안 열 이름 사이에 공백이없는 경우,이 오류를주는 것을 말한다. 그러나 나는 내가 올바르게 짜증 났다고 생각한다.

public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    sqLiteDatabase.execSQL(
      "CREATE TABLE " + TABLE_NAME + " (" 
      + BNUM_COL + " TEXT, " 
      + PNAME_COL + " TEXT, " 
      + AUTHOR_COL + " TEXT, " 
      + TYPE_COL + " TEXT, " 
      + PYEAR_COL + "INTEGER);"); 
    } 

내 로그 캣은 저를 보여 주었다 :

Cursor c = db.query("btable", SELECT, null, null, null, null, null, null); 

저를 도와주세요.

답변

13

마지막 필드는 열 이름과 키워드 INTEGER 사이에는 공백이 없습니다. 변수에 SQL 쿼리를 저장하고 시도하기 전에 로그

+ PYEAR_COL + " INTEGER);"); 
      ^
       | 
       Note the extra space! 

간단한 진단 도구 이러한 종류의 오류를 추적하는 것입니다 : 이것에

+ PYEAR_COL + "INTEGER);"); 

:이 라인을 변경해야 그것을 실행합니다. 그런 다음 logcat 출력을 검사하여 실제로 작성된 명령문을 볼 수 있습니다.

+0

나는이 어리석은 실수를했다고 믿을 수 없다. 정말 고맙습니다! – Adaichi

+1

@Adaichi - 어리석은 실수처럼 느껴질 수도 있지만, 모든 프로그래머가 같은 것을 만들었습니다. 내 눈에는 모든 코드가 항상 완벽합니다 ('/ FIXME'이 주위에 숨어 있지 않으면) 누군가 나를 위해 그것을 검토 할 때까지 "음,이게 맞습니까?"라고 말할 때까지는 완벽합니다. (대답은 항상 "[오오!] (http://en.wikipedia.org/wiki/D'oh!)") –

+0

쿼리 저장 및 출력에 대한 좋은 제안 – Clocker

관련 문제