2011-02-02 33 views
2

我正在为我的大学做最后的项目,并且出现一个奇怪的错误。 在Eclipse中,它说一切正常,但是当我试图访问此功能在数据库适配器程序崩溃时运行该程序:公共光标getAll错误Android

但如果相反,我只是把这样的程序正常运行:

public Cursor getAllProjectsCursor() { 
    return db.query(DATABASE_TABLE, 
        new String[] { 
          KEY_ID, 
          KEY_PROJ_NAME 
        }, 
        null, 
        null, 
        null, 
        null, 
        null); 
} 

我想通过所有列值,我认为所有的建筑物都很好。所有栏目都是一样的。

你能帮我吗?


在调试它说:

INFO/Database(677): sqlite returned: error code = 1, msg = no such column: beg_date 

在我的代码有:

public class PMDBAdapter { 

    private static final String DATABASE_NAME = "PocketManager.db"; 
     private static final String DATABASE_TABLE = "Projects"; 
      private static final int DATABASE_VERSION = 1; 
      private SQLiteDatabase db; 
      public static final String KEY_ID = "_id"; 
      public static final String KEY_PROJ_NAME = "proj_name"; 
      public static final int PROJ_NAME_COLUMN = 2; 
      public static final String KEY_AREA = "proj_area"; 
      public static final int AREA_COLUMN = 3; 
      public static final String KEY_BEG_DATE = "beg_date"; 
      public static final int BEG_DATE_COLUMN = 4; 
      public static final String KEY_END_DATE = "end_date"; 
      public static final int END_DATE_COLUMN = 5; 
      public static final String KEY_PERC = "perc"; 
      public static final int PERC_COLUMN = 6; 

      private final Context context; 
      private ProjDBOpenHelper dbHelper; 

和:

private static final String DATABASE_CREATE = "create table " + 
    DATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " 
      + KEY_PROJ_NAME + " text not null, " 
      + KEY_AREA + "text not null, " 
      + KEY_BEG_DATE + "long, " 
      + KEY_END_DATE + "long, " 
      + KEY_PERC + " integer);"; 
+1

您能否在崩溃期间提供错误的`logcat`输出? – 2011-02-02 14:35:06

+2

另外,在你崩溃的那部分代码中,是否在`KEY_PROJ_NAME`和`KEY_BEG_DATE`之间缺少一个逗号? – 2011-02-02 14:36:19

+1

“`long”之前没有空格,``KEY_BEG_DATE`和`KEY_END_DATE`没有空格。 将这些字符串更改为`“long”,因为现在这些列的名称是“beg_datelong”和“end_datelong”。 'KEY_AREA`也似乎是这种情况,在``text not null'之前放置一个空格“,对于那个呢! – 2011-02-02 15:33:36

回答

3

变化

return db.query(DATABASE_TABLE, new String[] { 
        KEY_ID, 
        KEY_PROJ_NAME 
        KEY_BEG_DATE}, 
          null, 
          null, 
          null, 
          null, 
          null); 

     } 

return db.query(DATABASE_TABLE, new String[] { 
        KEY_ID, 
        KEY_PROJ_NAME, 
        KEY_BEG_DATE}, 
          null, 
          null, 
          null, 
          null, 
          null); 

     } 

的Eclipse通常不会在你的数据库的查询字符串错误回升。

-1
public Cursor getAllDataDays() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String selectQuery = "SELECT * FROM " + TABLE_MYBUDGETWITHDAYS; 
    return db.rawQuery(selectQuery, null); 
    }