Android сохранить результат запроса SQL как исключение курсора - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть небольшая проблема с этим фрагментом кода:

public static int localUserIdByServerUserId(int serverUserId, String serverName){

        dbHelper = new DataBaseHelper(context, "opalqnka_sys_tpl.sqlite", null, 1);
        dbHelper.getDatabase();
        dbHelper.executeQuery("users", "objectId", "2");
        dbHelper.executeQuery("users","serverName","opalqnka");
        dbHelper.executeQuery("users", "objectId", "3");
        dbHelper.executeQuery("users","serverName","opalqnka");
        dbHelper.executeQuery("users", "objectId", "3");

        String query = "SELECT id FROM users WHERE objectId = "+serverUserId+" AND serverName = '"+serverName+"' LIMIT 1";
        ArrayList<String> result = new ArrayList<String>();
        cursor = dbHelper.executeSQLQuery(query);
        cursor.moveToFirst();
        while(!cursor.isAfterLast()) {
            result.add(cursor.getString(cursor.getColumnIndex("id")));
             cursor.moveToNext();
        }

        int uuid = Integer.parseInt(result.get(cursor.getInt(cursor.getColumnIndex("id"))));
        Log.w("localUSerByIdServerUserId","LocalUserByIdServerUserId result : "+uuid);
        cursor.close();
        return uuid;
    }

Это приводит к android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 в этой строке:

int uuid = Integer.parseInt(result.get(cursor.getInt(cursor.getColumnIndex("id"))));

Я не очень знакомбаза данных, поэтому я задаю, возможно, глупые вопросы здесь.Так что, если у кого-то есть решение моей проблемы, заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Сначала ясно, что вы хотите.Проблема сбоя возникает из-за отсутствия какого-либо значения в результате.сначала вы проверяете запись добавления в результат.Напечатайте журнал следующим образом:

Log.e("",""+result.toString());

Если есть только одна запись, вы можете получить это так:

int uuid = Integer.parseInt(result.get(0));

Если существует более одной записи, вы можете использовать для циклаболее одного идентификатора:

for(int i=0; i<result.size();i++)
    int uuid = Integer.parseInt(result.get(i));
0 голосов
/ 21 сентября 2011

Вы можете сделать что-то вроде этого:

cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        result.add(cursor.getString(cursor.getColumnIndex("id")));
        cursor.moveToNext();
    }

    Log.i("result ","Result : "+result.toString());
    Log.i("CURSOR ","Cursor Position : "+cursor.getPosition());
    Integer uuid = Integer.parseInt(result.get(cursor.getColumnIndex("id")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...