Извлечение данных из внешней собственной базы данных SQLite

#android #database #sqlite #null #cursor

#Android #База данных #sqlite #null #курсор

Вопрос:

У меня есть моя собственная база данных, которая содержитhttp://i55.tinypic.com/6i8861.jpg (SQLiteBrowser) У меня есть этот код, который копирует базу данных из папки ресурсов assets в системный data/data/package/files каталог http://pastebin.com/XeNGmrcD и вот как это реализовано в onCreate()http://pastebin.com/TigXFStF и это изображение, на котором test.sqlite помещается в системный каталог эмулятора, и ошибка, которую я получаю при выполнении приведенного ниже запроса:http://i51.tinypic.com/2mxrk0p.jpg

 cursor = dbObj.getReadableDatabase().query(TABLE_NAME, null, null, null, null, null, null);
  

Я получаю, что курсор равен нулю, поскольку таблица не найдена. Если я выполню тот же запрос, эквивалентный приведенному выше ( SELECT * FROM gradovi ) в браузере SQLite. Я получаю результаты, здесь я этого не делаю.
Пожалуйста, скажите мне, как я могу извлекать данные из своей базы данных? Что я делаю не так? Также я хочу знать, как выполнять итерации по записям?

Ответ №1:

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

Обратите внимание, что попытка отправить приложение с предварительно созданным файлом базы данных SQLite сопряжена с подводными камнями, включая различные пути и различные версии SQLite.

Комментарии:

1. Он действительно копирует его, я экспортировал файл, созданный на основе кода, и проверяю его с помощью браузера SQLite, в нем есть те же данные, что и должны. Версия 2, также я сохраняю статический путь. Я просто работаю над изменением имен баз данных (что должно произойти) в зависимости от случаев. В любом случае мне удалось исправить это самостоятельно. Теперь это работает безупречно. Спасибо!

Ответ №2:

 ((Button)findViewById(R.id.button01)).setOnClickListener(
new View.OnClickListener(){

    @Override
    public void onClick(View v) {
        DatabaseHelper myDbHelper = new DatabaseHelper(CopyDbActivity.this);
        try{
            myDbHelper.createDataBase();
        }catch (IOException ioe) {
            throw new Error("Unable to create database");
        }

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

        Toast.makeText(CopyDbActivity.this, "Success", Toast.LENGTH_SHORT).show();

        c=myDbHelper.query("EMP_TABLE", null, null, null, null,null, null);
        if(c.moveToFirst()){
            do {
                Toast.makeText(CopyDbActivity.this,
                "_id: "   c.getString(0)   "n"  
                "E_NAME: "   c.getString(1)   "n"  
                "E_AGE: "   c.getString(2)   "n"  
                "E_DEPT:  "   c.getString(3),
                Toast.LENGTH_LONG).show();
            } while (c.moveToNext());
        }
    }
});



}
  

Ответ №3:

Насколько я понимаю, местом назначения должно быть «/data / data /PackageName / databases / mydatabase».

Вы также можете получить некоторую помощь от http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications /