#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 /