2011-09-16 5 views
0

나는 코드의 조각 약간의 문제가 있습니다 :이 줄에서 저에게 android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0을 던지고안드로이드

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; 
    } 

:

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

정말 아니에요을 데이터베이스에 익숙한 이유가 여기에 어리석은 질문을하는 이유입니다. 누군가 내 문제에 대한 해결책을 가지고 있다면, 미리 감사드립니다!

답변

0

당신은 같은 것을 할 수 있습니다

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"))); 
2

먼저 원하는 것을 지 웁니다. 충돌 문제는 결과에 어떤 값도 얻지 못하는 경우 발생합니다. 먼저 레코드 add in 결과를 확인하십시오.

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

당신이 루프에 사용할 하나 개 이상의 ID를 얻을 수있는 더 이상의 레코드가있는 경우 : 당신이 이런 식으로 얻을 수있는 하나 개의 레코드 만있는 경우이

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

같은 로그 인쇄 할 :

for(int i=0; i<result.size();i++) 
    int uuid = Integer.parseInt(result.get(i));