После запроса вызов getInt для курсора принудительно закрывает мое приложение - PullRequest
0 голосов
/ 11 декабря 2011
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();

Я хочу, чтобы все идентификаторы в столбце идентификатора, поэтому я положил ноль в третий параметр метода запроса

мой журнал cat http://upic.me/i/oe/80untitled.jpg

Ответы [ 3 ]

1 голос
/ 19 января 2012

Изменение:

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

К:

int[] result = new int[c.getCount()];`
0 голосов
/ 12 декабря 2011

Либо удалите -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.

Надеюсь, это поможет.

0 голосов
/ 11 декабря 2011

В logcat может возникнуть проблема с не найденным столбцом. Есть ли определенно столбец Memo_ID?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...