J'ai un petit problème à obtenir les éléments dans ma base de données SQLite dans la base android.My ressemble à ceci:Comment obtenir les données de SQLite - Android
id/ serverName/objectId/objectOid/....//objectId is actually userId-which I need to compare
Je reçois un données du serveur et je dois vérifier l'identifiant de l'utilisateur à partir du serveur et l'ID utilisateur local du database.I ont ce morceau de code:
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;
}
Je suis en train de vérifier toutes les entrées dans la base de données et s'il y a un match renvoyez-le.J'appelle cette méthode comme ceci:
uuId = rpc.lUserIdByServerUserId(userId,newServerName);
et je reçois cette exception à cette ligne: 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
Et en fait je ne comporte qu'un seul test dans ma base de données qui est le même que le retour de l'ID utilisateur du serveur.
Des idées où est mon erreur et comment résoudre ce problème?
quelle ligne est (RPCCommunicator.java:1083)? Marquez les lignes de code s'il vous plaît. –
désolé oubliez de le mentionner. Je viens de mettre à jour ma question avec la ligne correcte qui est: Integer uuid = Integer.parseInt (result.get (cursor.getColumnIndex ("objectId"))); –