Android SQL-запрос несуществующей строки - PullRequest
0 голосов
/ 29 декабря 2011

У меня небольшая проблема с базой данных SQLite в моем приложении.Моя цель - вставить строку в мою базу данных, если она не существует, в противном случае обновить строку.

Как проверить, существует ли строка с данным условием?

Я пытался:

Cursor cursor = dbAdapter.query(dbName, null, "xcoord="+xcoord+" AND ycoord="+ycoord+" AND mac='"+mac+"'"+" AND ssid='"+ssid+"'", null, null, null, null);
cursor.isNull(cursor.getColumnIndex("ssid"));

а затем проверить, если курсор нулевой?Но вот я получил это SQLException:

FATAL EXCEPTION: main

android.database.CursorIndexOutOfBoundsException: запрошен индекс -1, с размером 0

на андроиде.database.AbstractCursor.checkPosition (AbstractCursor.java:580)

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Прежде чем работать с курсором, я всегда делаю if (cursor != null && cursor.moveToFirst())

Если значение равно false, у вас либо нет таблицы, либо нет записи.

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

Удалите слово EXISTS из вашего запроса. Если вы получите какие-то строки назад, вы знаете, что там есть вещь.

Предложение EXISTS принимает строку, заданную в качестве операнда (например, подвыбор или объединение), и оценивается как истина или ложь в зависимости от того, есть ли что-либо или нет.

Возможно, это не лучший способ справиться с этим, но я обычно просто пытаюсь INSERT, и если я получаю исключение, я делаю UPDATE.

...