Невозможно получить данные из базы данных при запуске на реальном устройстве - PullRequest
0 голосов
/ 08 февраля 2012

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

Он отлично работает на эмуляторе, но когда я использую файл APK этого приложения нареальное устройство, оно не показывает никаких данных в списке, моя база данных хранится в проводнике windows-file-data-database-database-table_name.

Я имею в виду этот сайт

http://anujarosha.wordpress.com/2011/12/19/how-to-retrieve-data-from-a-sqlite-database-in-android/

Вот фрагмент моего кода с использованием базы данных

list_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, namelist1());

        list1.setAdapter(list_adapter);

    }

    public  List<String> namelist1()
    {
        // We have to return a List which contains only String values. Lets create a List first
        List<String> namelist= new ArrayList<String>();

        // First we need to make contact with the database we have created using the DbHelper class

        Database_helper_class open_database_helper= new Database_helper_class(this);
        // Then we need to get a readable database
        SQLiteDatabase sqlitedatabase = open_database_helper.getReadableDatabase();
        // We need a a guy to read the database query. Cursor interface will do it for us
        //(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
        Cursor cursor =sqlitedatabase.query(open_database_helper.TABLE_E_LEARNING,null,null,null,null,null,null);
        //above query is read all the database column

        // Cursor object read all the fields. So we make sure to check it will not miss any by looping through a while loop

        while(cursor.moveToNext()){
            String str_name = cursor.getString(cursor.getColumnIndex(Database_helper_class.QUES_COLUMN));
            String str_id = cursor.getString(cursor.getColumnIndex(Database_helper_class.ANS_COLUMN));
            //double str_gpa = cursor.getDouble(cursor.getColumnIndex(Database_helper_class.GPA_COLUMN));


            // Finish reading one raw, now we have to pass them to the POJO
            nameclass nameclassobj1=new nameclass();
            nameclassobj1.setname(str_name);
            nameclassobj1.setid(str_id);
            //nameclassobj1.setgpa(str_gpa);

            // Lets pass that POJO to our ArrayList which contains undergraduates as type
              pojo_namelist.add(nameclassobj1);

            // But we need a List of String to display in the ListView also.
                //That is why we create "nameList"
            namelist.add(str_name);

        }
        sqlitedatabase.close();

Ответы [ 4 ]

0 голосов
/ 01 августа 2012

Извините за поздний ответ, занялся другим приложением

На самом деле данные не были сохранены в базе данных, поэтому я не получал их на устройстве. Это работает сейчас.

0 голосов
/ 08 февраля 2012

проверьте путь к вашей базе данных в DBHelper.class.И после этого напишите строку ниже, прежде чем вызывать цикл while.

cursor.moveToFirst();

Это будет указывать на вашу первую запись, а затем будет работать цикл while.

0 голосов
/ 08 февраля 2012

Попробуй так:

// Cursor object read all the fields. So we make sure to check it will not miss any by looping through a while loop
cursor.moveToFirst();
    while(!cursor.isAfterLast()){
        String str_name = cursor.getString(cursor.getColumnIndex(Database_helper_class.QUES_COLUMN));
        String str_id = cursor.getString(cursor.getColumnIndex(Database_helper_class.ANS_COLUMN));
        //double str_gpa = cursor.getDouble(cursor.getColumnIndex(Database_helper_class.GPA_COLUMN));


        // Finish reading one raw, now we have to pass them to the POJO
        nameclass nameclassobj1=new nameclass();
        nameclassobj1.setname(str_name);
        nameclassobj1.setid(str_id);
        //nameclassobj1.setgpa(str_gpa);

        // Lets pass that POJO to our ArrayList which contains undergraduates as type
          pojo_namelist.add(nameclassobj1);

        // But we need a List of String to display in the ListView also.
            //That is why we create "nameList"
        namelist.add(str_name);

    }

Используйте метод isAfterLast () -, чтобы проверить, достиг ли ваш конец курсора.

0 голосов
/ 08 февраля 2012

sqlitedatabase.query() возвращает курсор, который расположен перед первой записью.Обязательно позвоните moveToFirst(), прежде чем пытаться получить доступ к любым данным из него.

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