метод getString в андроиде не работает

Это наш основной класс для получения информации из базы данных. Мы пытаемся получить значения столбца «имя» в базе данных «штрих-код», которую мы создали. Прямо сейчас мы не можем получить желаемое значение, но значения как «a, b, c, d, ..." (например, он возвращает «a», когда мы запрашиваем 1-й, он возвращает «b» когда мы просим второе в столбце "имя") значение методом cursor.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]);
        }
    }

person user2255446    schedule 29.04.2013    source источник
comment
getString method does not work - да, есть. В вашем коде, по-видимому, нет, но вы четко не описали, в чем проблема. Что точно происходит?   -  person Simon    schedule 29.04.2013
comment
На самом деле я имел в виду, что вместо значения values[2] в базе данных я просто получил значение b. когда я меняю значения [2] на значения [1], я получаю или значения [3], я получаю c. В базе данных у меня не было данных типа a, b или c. Кстати, я создал базу данных в браузере баз данных SQLite. Моя база данных выглядит так:   -  person user2255446    schedule 29.04.2013
comment
у него есть столбец идентификатора, который представляет собой целочисленный первичный ключ, и столбец имени, который является текстом.   -  person user2255446    schedule 29.04.2013
comment
stackoverflow.com/questions/9029668 /   -  person Yaqub Ahmad    schedule 30.04.2013


Ответы (1)


Вы неправильно работаете с курсором (также вам не следует выполнять вызовы БД в основном потоке пользовательского интерфейса, чем вы сейчас и занимаетесь). См.: 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();
person Krispy    schedule 29.04.2013
comment
Вы также должны убедиться, что вы не вернули нулевой курсор. - person Krispy; 29.04.2013