2013-04-29 2 views
1

데이터베이스에서 정보를 얻는 것이 우리의 주된 클래스입니다. 우리가 만든 "바코드"데이터베이스에서 "이름"열의 값을 가져 오려고합니다. 지금은 원하는 값을 얻을 수는 없지만 값을 "a, b, c, d, ..."(예 : 첫 번째 요청시 "a"를 반환하고 "b" 우리는 cursor.getString 방법android에서 getString 메서드가 작동하지 않습니다.

public class MainActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      DataBaseHelper myDbHelper = new DataBaseHelper(this); 
      myDbHelper = new DataBaseHelper(this); 
      try { 
       myDbHelper.createDatabase(); 
      } catch (IOException ioe) { 
       throw new Error("Unable to create database"); 
      } 

      try { 
       myDbHelper.openDataBase(); 
      } catch(SQLException sqle){ 
       throw sqle; 
      } 

      Cursor cursor = myDbHelper.getAllAccounts(); 

      String[] values = new String[6]; 
      int i=0; 

      //take into the array from the database 
      while(cursor.moveToNext()){ 
       values[i]= cursor.getString(cursor.getColumnIndex("name")); 
       i++; 
      } 

      cursor.close(); 

      //Write to textview 
      TextView youtextview = (TextView) findViewById(R.id.textView1); 
      youtextview .setText(values[2]); 
     } 
    } 
+2

'getString 메서드가 작동하지 않습니다. '- 예. 귀하의 코드는 분명히 문제가 무엇인지 명확하게 설명하지는 않았습니다. 정확히 * 어떤 일이 발생합니까? – Simon

+0

나는 실제로 데이터베이스의 값 [2] 대신에 값 "b"를 얻었다는 것을 의미했다. 내가 [2] 값을 [1] 값으로 변경하면 "a"나 값을 얻습니다. [3] "c"를 얻었습니다. 데이터베이스에는 "a", "b"또는 "c"와 같은 데이터가 없었습니다. 그건 그렇고, SQLite 데이터베이스 브라우저에서 데이터베이스를 만들었습니다. 데이터베이스는 다음과 같습니다 : – user2255446

+0

"정수 기본 키"인 id 열과 "텍스트"인 이름 열이 있습니다. – user2255446

답변

0

당신은 (또한 당신이하지 말아야 할 올바른 방법으로 커서를 처리하지 않습니다와 값) "이름"열에서 두 번째를 요청할 때 DB는 메인 UI 스레드에서 호출 그것은 지금하고있는 일입니다). 참고 : http://developer.android.com/reference/android/database/Cursor.html

static final COL_NAME = "name"; 
Cursor cursor = myDbHelper.getAllAccounts(); 
cursor.moveToFirst(); 
int maxCursorIndex = cursor.getCount(); 
for(int cursorIndex=0;cursorIndex<maxCursorIndex;cursorIndex+=1){ 
    values[cursorIndex] = cursor.getString(cursor.getColumnIndex(COL_NAME); 
} 
cursor.close(); 
+0

또한 null 커서를 다시받지 않았는지 확인해야합니다. – Krispy