Проблема с извлечением данных из SQLite в Android - PullRequest
0 голосов
/ 03 июля 2011

Я следил за этим рассказом об использовании вашей собственной базы данных SQLite .Я сделал эти шаги, как описано в руководстве:

  • Подготовка моей базы данных
  • Копирование того же класса EXACT DataBaseHelper в мой пакет проекта.Вы можете увидеть код класса там
  • Затем я просто добавил один метод к классу DataBaseHelper, который является fetchData.Он просто выбирает целую таблицу с заданным именем:

    public Cursor fetchData(String table) {
    String[] selectionArgs = new String[] {"*"};
    return myDataBase.query(table, null, null, selectionArgs, null, null, null);
    }
    
  • После этого на одном из занятий я сделал это:

    DataBaseHelper myDbHelper;
    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;
    
    }
    
    TextView txt = (TextView) findViewById(R.id.txt);
    try {
    //I will use my method to fetch a table named: myTable      
        Cursor c = myDbHelper.fetchData("myTable"); 
        if((Object)c.getCount() != null)
            txt.setText(c.getCount());
        else
            txt.setText("null");
    } catch(Exception e) {
        txt.setText("error");
    
    } 
    

Тем не менее, я продолжаю получать сообщение об ошибке в TextView.Есть ли проблема на моем пути?

Ответы [ 3 ]

1 голос
/ 04 июля 2011

Моя проблема не связана с SQLite. Это была глупая ошибка: - \

Ошибка во второй строке здесь:

if((Object)c.getCount() != null)
    txt.setText(c.getCount());

Должно быть так:

    txt.setText(""+c.getCount());

метод setText() принимает ChaSequence, а метод getCount() возвращает Integer, которые не соответствуют типу. Вы можете обойти этот простой способ, добавив пустую строку:)

Спасибо, ребята.

0 голосов
/ 03 июля 2011

Вы пытаетесь привести int к объекту, а затем сравниваете значение приведения с нулем.Я бы сказал, что ваш код, скорее всего, сломается.

0 голосов
/ 03 июля 2011
public Cursor fetchData(String table) {
     return myDataBase.query(table, null, null, null, null, null, null);
}

Похоже, вы неправильно поняли параметр selectionArgs. В документации говорится:

Вы можете включить? S в выбор, который будут заменены значениями из selectionArgs, для того чтобы они появляются в выборе. Ценности будут связаны как строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...