Android SQLite: отображение записей данных - PullRequest
0 голосов
/ 17 ноября 2011

Я пытался решить эту проблему, но, похоже, не могу найти то, что ищу в поиске Google последние несколько дней, я попал и пропустил то, что связано с тем, что я хочуделаю, но не сталкивался с чем-то, что я пытаюсь сделать.

Для начала я собрал свою базу данных SQLite вместе с «TheNewBoston Android Tuts», все работает отлично, теперь, когда я пытаюсь изменитьпросмотр базы данных вокруг него выдает ошибки или вылетает при запуске приложения.Я хочу отобразить определенные столбцы в строке из БД с помощью курсора с помощью цикла for и динамически загрузить TableView с данными:

DbEntry [data |данные |Показано |данные |Дисплей |Дисплей |data]

Я могу сделать это, если у меня отключен TextView, но с его помощью в TableLayout> TableRow я думаю, что это проблема, но не уверен ... хотел бы иметь возможность загрузитьтаблицы строк из самого класса вместо установки текстовых представлений, если это возможно.Я надеюсь, что дал достаточно информации о том, что я пытаюсь сделать, если кто-нибудь может указать мне на действительно хороший учебник или пролить свет на него, он будет очень признателен.

XML:

 <TableLayout
    android:id="@+id/view_Table"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="5" >
 <TableRow   
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="4" >
        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
            <TextView
                android:id="@+id/view_DbCol3"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="DB Col 3 Displayed Data" />
        </TableRow>

с xml, я надеюсь, что я делаю таблицу правильно, что она похожа на вещи типа hmtl, помещая строки таблицы рядом друг с другом

Класс SQLview

setContentView(R.layout.sqlview);
    TextView tv = (TextView) findViewById(R.id.view_DbCol3);
    try {
        DBload info = new DBload(this);
        info.open();
        String data = info.getData();
        info.close();
        tv.setText(data);
    } catch (Exception e) {
        // Error Message Dialog
        String error = e.getLocalizedMessage();
        Dialog d = new Dialog(this);
        d.setTitle("DB ERROR");
        TextView tv1 = new TextView(this);
        tv1.setText(error);
        d.setContentView(tv1);
        d.show();
    }

Класс DbHelper:Метод getData

public String getData() {

    String[] cols = new String[] {KEY_PLACE}; 
                 // I have also tried with all my KEY variables

    // reads info from DB columns
    Cursor c = ourDB.query(KEY_TABLE, cols, null, null, null, null, null);
    String result = "";

    int Ione = c.getColumnIndex(KEY_PLACE);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result 
        + c.getString(Ione) 
        + "\n";
    }
    return result;
}

полученная ошибка:

11-17 00: 13: 09.993: E / CursorWindow (590): неверный запрос для слота поля 0, -1.numRows = 2, numColumns = 1

как я уже сказал, я надеюсь, что дал достаточно информации для небольшой помощи, если это возможно, большое спасибо

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Ошибка, по-видимому, говорит о том, что ваш столбец 'KEY_PLACE' не существует, поскольку метод columnIndex возвращает -1.

Проверьте значение KEY_PLACE и имя столбца, возвращенного в вашем курсоре

Надеюсь, это поможет Jokahero

PS: Вы должны проверить, что ваш курсор не нулевой, прежде чем использовать его:

if (c != null) {
    while (c.moveToNext()) {
        // ...
    }
}

А также не забудьте закрыть курсор по окончании работы:

c.close();
1 голос
/ 17 ноября 2011

Эта ссылка поможет вам много.

Anywayz попробуйте это в вашем коде

if(c.getCount()>0) {
    int index=0;
    while(c.moveToNext()){

    result = result  
            + c.getString(index)  
            + "\n"; `enter code here`
    index++;
    }
}

Надеюсь, это поможет ..

...