У меня небольшая проблема с получением элементов в моей базе данных sqlite в android. Моя база данных выглядит так:
id / serverName / objectId / objectOid / ....//objectId is actually userId-which I need to compare
Я получаю данные с сервера, и мне нужно проверить идентификатор пользователя с сервера и локальный идентификатор пользователя из базы данных. У меня есть этот кусок кода:
public static Integer lUserIdByServerUserId(int serverUserId, String serverName){
return localUserIdByServerUserId( serverUserId, serverName);
}
private static Integer localUserIdByServerUserId(int serverUserId, String serverName){
DataBaseHelper dbHelper = new DataBaseHelper(context, "ops_sys_tpl.sqlite",null,1);
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("objectId")));
cursor.moveToNext();
}
Log.i("result ","Result : "+result.toString());
Log.i("CURSOR ","Cursor Position : "+cursor.getPosition());
Integer uuid = Integer.parseInt(result.get(cursor.getColumnIndex("objectId")));
Log.w("localUSerByIdServerUserId","LocalUserByIdServerUserId result : "+uuid);
cursor.close();
return uuid;
}
Я пытаюсь проверить все записи в базе данных и, если есть совпадение, вернуть его. Я вызываю этот метод следующим образом:
uuId = rpc.lUserIdByServerUserId(userId,newServerName);
и я получаю это исключение в этой строке: Integer uuid = Integer.parseInt(result.get(cursor.getColumnIndex("objectId")));
09-20 16:55:47.647: WARN/System.err(31031): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
09-20 16:55:47.647: WARN/System.err(31031): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
09-20 16:55:47.647: WARN/System.err(31031): at java.util.ArrayList.get(ArrayList.java:311)
09-20 16:55:47.647: WARN/System.err(31031): at com.stampii.stampii.comm.rpc.RPCCommunicator.localUserIdByServerUserId(RPCCommunicator.java:1083)
09-20 16:55:47.647: WARN/System.err(31031): at com.stampii.stampii.comm.rpc.RPCCommunicator.lUserIdByServerUserId(RPCCommunicator.java:1066)
09-20 16:55:47.657: WARN/System.err(31031): at com.stampii.stampii.comm.rpc.InfoStartRPCPacket.executeBefore(InfoStartRPCPacket.java:176)
09-20 16:55:47.657: WARN/System.err(31031): at com.stampii.stampii.user.UserLogin$2$1.run(UserLogin.java:212)
09-20 16:55:47.657: WARN/System.err(31031): at java.lang.Thread.run(Thread.java:1102)
09-20 16:55:47.657: WARN/ERROR(31031): Error - java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
И на самом деле у меня есть только одна тестовая запись в моей базе данных, которая совпадает с userID, возвращаемым с сервера.
Есть идеи, где моя ошибка и как это исправить?