查询后,在光标上调用getInt会关闭我的应用程序

时间:2011-12-11 10:03:12

标签: android sqlite

private static final String Memo_ID = "_ID";

这是我的创建表代码,没有问题

private static final String MemoDB_CREATE = "create table Memo (_ID integer primary key autoincrement, MemoName text, MemoPW text, MainType text, SecType text, MainID text, SecID text)";

db.execSQL(MemoDB_CREATE);

这是查询代码。因为getInt方法

,我有力量关闭
openDB();
String[] col = new String[] {Memo_ID};
Cursor c = db.query(Memo_Table, col, null, null, null, null, null);
int[] result = new int[c.getCount()-1];     
if(c.moveToFirst()){
     for (int i = 0; i < c.getCount(); i++){
          result[i] = c.getInt(c.getColumnIndex(Memo_ID));
          c.moveToNext();
     }//end of for
}               
c.close();
db.close();

我想要id列中的所有id,为什么我将null放入查询方法的第三个参数

我的日志猫http://upic.me/i/oe/80untitled.jpg

3 个答案:

答案 0 :(得分:1)

变化:

int[] result = new int[c.getCount()-1];

要:

int[] result = new int[c.getCount()];`

答案 1 :(得分:0)

从logcat中,您可能找不到列的问题。肯定有Memo_ID列吗?

答案 2 :(得分:0)

中删除-1
int[] result = new int[c.getCount()-1];

或将其添加到

for (int i = 0; i < c.getCount(); i++){

在c.getCount()之后:

for (int i = 0; i < c.getCount() - 1; i++){

我不知道你的意图是什么,所以不能告诉你哪一个是最好的,但我怀疑你需要从数组声明中删除-1。如果没有,请在查询返回零结果时注意负大小的数组异常! c.getCount() - 1将导致-1,并且您不能拥有大小为-1的数组。

希望这有帮助。