2013-03-02 2 views
2

답변이있는 사람이 있습니까? 내 데이터베이스 헬퍼 클래스에android에서 item_name 열을 찾을 수 없습니다.

코드 :

public void onCreate(SQLiteDatabase db) { 
    db.execSQL(DATABASE_CREATE); 
    db.execSQL(CREATE_ITEM_DB); 
} 

public static final String ITEM_NAME = "item_name"; 
public static final String ITEM_STATUS = "item_status"; 
public static final String ITEM_DESCRIPTION = "item_description"; 
public static final String ITEM_CATEGORY = "item_category"; 
public static final String ITEM_ROW_ID = "row_id"; 
private static final String ITEM_TABLE = "table_of_items"; 

    public static final String CREATE_ITEM_DB = "CREATE TABLE " 
      + ITEM_TABLE + "(" + ITEM_ROW_ID + 
     " INTEGER PRIMARY KEY AUTOINCREMENT," + ITEM_NAME 
      + " TEXT NOT NULL," + ITEM_STATUS + " TEXT NOT NULL," + ITEM_DESCRIPTION + " TEXT," + ITEM_CATEGORY + " TEXT NOT NULL," + 
      KEY_NAME + " TEXT);"; 

지금, 다른 클래스에 내가 전화 :

public void list(){ 
myModel.open(); 
current_user = myModel.getCurUser(); 
Item [] items = (myModel.getLostItems(current_user)); 
if(items != null){ 
    myView.setItem(items); 
} 

myModel.close(); 

}

myModel가 내 데이터베이스 클래스입니다. 그것은 내 데이터베이스 도우미 클래스와 내 sqlite 데이터베이스에 대한 인스턴스를 보유하고 있습니다. 또한 myModel.open()은 쓰기 가능한 데이터베이스를 가져옵니다.

오류 메시지는 매우 명확합니다. item_name은 (는) 열이 아닙니다.

하지만 확실히 그럴 것 같습니다.

편집 : 주위를 돌아본 후, 나는이 특별한 칼럼에 관한 것이 아니라고 결정했습니다. 그것은 내가 열 배열에 넣어 같은 열 오류 메시지에서 결과를 어떤 열이 보인다.

편집 2 : 여기 내 getLostItems입니다 :

 public Item[] getLostItems(String current_user) { 
    String [] columns = new String [] {DB_Helper.ITEM_NAME, 
      DB_Helper.ITEM_STATUS, 
      DB_Helper.ITEM_DESCRIPTION, 
      DB_Helper.ITEM_CATEGORY, 
      DB_Helper.ITEM_ROW_ID, 
      DB_Helper.KEY_NAME}; 
    Cursor c = database.query(DB_Helper.DATABASE_TABLE_USERS, columns, DB_Helper.KEY_NAME + " = ? AND " + DB_Helper.ITEM_STATUS + " = ?", 
      new String[] {current_user, "lost"}, 
      null, 
      null, 
      null); 

기술적으로, 조금 더 코드가 있지만, 디버거로 코드를 걷고 난 후에, 그것은 쿼리 문에 실패합니다.

로그 :

03-02 16:44:56.375: E/SQLiteLog(16362): (1) no such column: item_name 
03-02 16:44:56.375: D/AndroidRuntime(16362): Shutting down VM 


03-02 06:47:46.825: E/AndroidRuntime(6760): FATAL EXCEPTION: main 
03-02 06:47:46.825: E/AndroidRuntime(6760): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wheresmystuff/com.example.wheresmystuff.View.DisplayItems}: android.database.sqlite.SQLiteException: no such column: item_name (code 1): , while compiling: SELECT item_name, item_status, item_description, item_category, row_id, id_name FROM reg_users_table WHERE id_name = ? AND item_status = ? 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.os.Looper.loop(Looper.java:137) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at dalvik.system.NativeStart.main(Native Method) 
03-02 06:47:46.825: E/AndroidRuntime(6760): Caused by: android.database.sqlite.SQLiteException: no such column: item_name (code 1): , while compiling: SELECT item_name, item_status, item_description, item_category, row_id, id_name FROM reg_users_table WHERE id_name = ? AND item_status = ? 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.example.wheresmystuff.Model.DB.getLostItems(DB.java:180) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.example.wheresmystuff.Presenter.ListingPresenter.list(ListingPresenter.java:33) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.example.wheresmystuff.Presenter.ListingPresenter.<init>(ListingPresenter.java:26) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at com.example.wheresmystuff.View.DisplayItems.onCreate(DisplayItems.java:26) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.Activity.performCreate(Activity.java:5104) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
03-02 06:47:46.825: E/AndroidRuntime(6760):  ... 11 more 
+1

어디에서 오류 메시지가 나타 납니까? – sandrstar

+0

@sandrstar 로그 고양이 – user678392

+0

myModel.getLostItems() 메소드 코드를 붙여 넣기를 원하십니까? –

답변

0

당신은 그것은 여기에

KEY_NAME + " TEXT);" 
+0

죄송합니다. 편집을 의미했습니다. 이 문제를 해결 한 후에도 여전히 작동하지 않습니다. – user678392

+0

쿼리 문 게시. 쿼리에서 어딘가에 리터럴이 필요해 보입니다. –

+0

완료. 나는 그 질의를 게시했다. 나는 여전히 작동하지 않는 이유를 모르겠다. – user678392

0

해야한다 대신

KEY_NAME + " TEXT, 

의 추가 쉼표를 가지고, 그것은 myModel에서 SELECT 문에서 오류 메시지를 보여주고있다. getLostItems() 메소드를 사용하여 쿼리의 item_name 열에 대해 ''와 함께 올바른 매개 변수를 전달하는지 확인하십시오.

+0

예, 방금 내 쿼리 문을 게시했습니다. 나는 심지어 쿼리 문에서 item_name을 사용하지 않는다. – user678392

관련 문제