2013-05-10 1 views
0

우선 영어를 잘 못해서 미안합니다. 나는 현재 일식과 안드로이드 애플 리케이션을 개발하고 데이터베이스에서 데이터를 가져 오는 동안 문제가 있습니다. 데이터베이스에서 데이터를 읽는 방법입니다. 나는라는 클래스 SQLiteAdapter에서이 방법을 넣어 :데이터베이스에서 데이터를 가져 오는 중 앱이 다운 됨

public Cursor getQuestionEachLevel(long levelId) 
{ 
    return sqLiteDatabase.query(MYDATABASE_TABLE, new String[]{KEY_ROWID, KEY_ANSWER,   
    KEY_QUESTION, KEY_HINT, KEY_FLAG, KEY_LEVEL}, KEY_LEVEL + "=" + levelId, 
    null, null, null, null, null); 
} 

을 그리고이 메소드를 호출하고 데이터를 가져가는 코드입니다. 이 코드를 다른 클래스에 넣습니다.

int x=0; 
    String getId[] = null; 
    String getAnswer[] = null; 
    String getQuestion[] = null; 
    String getHint[] = null; 
    String getFlag[]= null; 
    String getLevel[]= null; 

      mySQLiteAdapter = new SQLiteAdapter(this); 
      mySQLiteAdapter.openToRead(); 
      Cursor c = mySQLiteAdapter.getQuestionEachLevel(getLevelKey); 
      if(c.moveToFirst()){ 
     do{ 
      getId[x] = c.getString(0); 
      getAnswer[x] = c.getString(1); 
      getQuestion[x] = c.getString(2); 
      getHint[x] = c.getString(3); 
      getFlag[x] = c.getString(4); 
      getLevel[x] = c.getString(5); 
      x++; 
     }while(c.moveToNext()); 
    } 
    mySQLiteAdapter.close(); 

나는 나중에 그것을 사용하는거야 때문에 특정 변수에 데이터베이스 열에서 데이터의 각을 넣고 싶다. Eclipse는 오류를 표시하지 않지만 휴대 전화에서이 앱을 실행하려고하면 데이터를 가져 오는 동안 앱이 중단됩니다. 누구든이게 뭐가 잘못 됐는지 알아?

+1

후 로그 고양이 –

+0

당신이지고 .... – Daniel

+0

로그 캣이 얼마나 올바른 방법으로 배열을 초기화하는 아무 잘못 –

답변

2

귀하의 logcat을 올리십시오. . 그러나 그 동안

int x=0; 
String getId[] = null; 
String getAnswer[] = null; 
String getQuestion[] = null; 
String getHint[] = null; 
String getFlag[]= null; 
String getLevel[]= null; 

, 그 후

do{ 
     getId[x] = c.getString(0); 
     getAnswer[x] = c.getString(1); 
     getQuestion[x] = c.getString(2); 
     getHint[x] = c.getString(3); 
     getFlag[x] = c.getString(4); 
     getLevel[x] = c.getString(5); 
     x++; 
    }while(c.moveToNext()); 

는 (당신의 배열이 초기화되지 않으며 당신은 내가이 변경 조언을 줄에 액세스를 시도하고 ... 항상 매우 문제가있다 :

int x=0; 
List<String> getId = new ArrayList<String>(); 
List<String> getAnswer = new ArrayList<String>(); 
List<String>getQuestion = new ArrayList<String>(); 
List<String> getHint = new ArrayList<String>(); 
List<String>getFlag= new ArrayList<String>(); 
List<String>getLevel = new ArrayList<String>(); 

, 그 후

do{ 
     getId.add(c.getString(0)); 
     getAnswer.add( c.getString(1)); 
     getQuestion.add(c.getString(2)); 
     getHint.add(c.getString(3)); 
     getFlag.add(c.getString(4)); 
     getLevel.add(c.getString(5)); 
     x++; 
    }while(c.moveToNext()); 
+0

표시되지 않습니다 어떤 오류 게시하세요? –

+0

내 확장 된 대답을보세요. ArrayList를 사용하면 미리 크기를 가질 필요는 없지만 그럼에도 항목을 추가 할 수 있습니다 ... – DigCamara

+0

작동합니다! 도와 줘서 고마워. –

0

모든 배열을 사용하기 전에 초기화해야합니다.

int x=0; 
String getId[] = null; 
String getAnswer[] = null; 
String getQuestion[] = null; 
String getHint[] = null; 
String getFlag[]= null; 
String getLevel[]= null; 

     mySQLiteAdapter = new SQLiteAdapter(this); 
     mySQLiteAdapter.openToRead(); 
     Cursor c = mySQLiteAdapter.getQuestionEachLevel(getLevelKey); 
     if(c.moveToFirst()){ 
     int numOfRows = c.getCount(); 
     getId = new String[numOfRows]; 
     getAnswer = new String[numOfRows]; 
     getQuestion = new String[numOfRows]; 
     getHint = new String[numOfRows]; 
     getFlag = new String[numOfRows]; 
     getLevel = new String[numOfRows]; 
    do{ 
     getId[x] = c.getString(0); 
     getAnswer[x] = c.getString(1); 
     getQuestion[x] = c.getString(2); 
     getHint[x] = c.getString(3); 
     getFlag[x] = c.getString(4); 
     getLevel[x] = c.getString(5); 
     x++; 
    }while(c.moveToNext()); 
} 
mySQLiteAdapter.close(); 
관련 문제