2013-03-02 25 views
2

有没有人有答案?在android中找不到列项目名称

代码在我的数据库辅助类:

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 2013-03-02 06:28:07

+0

@sandrstar登录猫 – user678392 2013-03-02 06:32:30

+0

可以请粘贴myModel.getLostItems()方法代码吗? – 2013-03-02 07:11:13

回答

0

您有一个额外的逗号而不是

KEY_NAME + " TEXT, 

应该

KEY_NAME + " TEXT);" 
+0

对不起,本意是要编辑出来的。纠正后,它仍然不起作用。 – user678392 2013-03-02 06:54:09

+0

发布您的查询语句。看来你需要一个文字在你的查询中。 – 2013-03-02 06:56:43

+0

完成。我发布了查询。我仍然不明白为什么它不起作用 – user678392 2013-03-02 17:00:28

0

这里,显示基于myModel select语句错误消息。 getLostItems()方法,请检查是否在查询中为item_name列传递了正确的参数。

+0

是的,我刚刚发布我的查询语句。我甚至没有在我的查询语句中使用item_name。 – user678392 2013-03-02 16:28:23

相关问题