Страница 1 из 1
Нужен совет по выбору наполнения бд
Добавлено: 18 ноя 2014, 13:24
DimanSS
У меня есть задача написать приложение которое будет искать и выводить данные. Например указано фамилия, имя, отчество, дата рождения. Таких строк 20-30 тысяч. Пользователь вводит фамилию и нажимает поиск, должна выйти строка с ФИО и датой рождения. Обновления раз в неделю. Доступа к интернету нет, необходимо закидывать файл с бд на телефон.
Я вижу 2 решения:
1) из xls парсить в xml на компе, потом парсить в андроиде в базу.
2) на компе xls парсить в csv, создаю бд на компе, и подсовываю бд приложению (не очень вкурил как можно разместить готовую бд в памяти устройства).
Посоветуйте какое решение лучше и оптимальнее сделать. Или может предложите свое, более лучшее решение. Спасибо!
Re: Нужен совет по выбору наполнения бд
Добавлено: 18 ноя 2014, 17:43
KamiSempai
Re: Нужен совет по выбору наполнения бд
Добавлено: 18 ноя 2014, 17:48
DimanSS
Спасибо за ссылку, это к моему второму решению. Но в том примере при изменении бд придется каждый раз компилить новый apk и устанавливать на устройство, а это не очень хорошо.
Re: Нужен совет по выбору наполнения бд
Добавлено: 18 ноя 2014, 18:01
KamiSempai
В примере, что я привел, база копируется из ассетов. Аналогичным способом ее можно скопировать от куда угодно (SD карта, FTP, интернет).
В методе CopyDataBaseFromAsset в самой первой строке открывается InputStream. Если использовать нужный InputStream все должно получиться.
Парсить 20-30 тысяч строк в базу на телефоне займет много времени, лучше проделать эту работу на компьютере.
Re: Нужен совет по выбору наполнения бд
Добавлено: 19 ноя 2014, 09:19
DimanSS
Большое спасибо! Буду пробовать. Насколько я понял мне необходимо методом InputStream скопировать (в моем случае из встроенной памяти устройства) бд к себе в приложение, и путь будет такой: "//data//data//%s//databases//"
А нельзя сразу прописывать путь к базе когда она находиться не в assets? Необходимо будет каждый раз копировать бд?
Например сейчас я открываю бд из assets так:
Код: Выделить всё
String packageName = context.getPackageName();
DB_PATH = String.format("//data//data//%s//databases//", packageName);
DB_NAME = databaseName;
openDataBase();
Правильно ли будет изменить его на это:
Код: Выделить всё
String packageName = context.getPackageName();
DB_PATH = String.format("путь до файла", packageName);
DB_NAME = databaseName;
openDataBase();
Re: Нужен совет по выбору наполнения бд
Добавлено: 19 ноя 2014, 16:15
KamiSempai
Нет, не верно. DB_PATH - это путь к папке во внутренней памяти где должна лежать база.
Вам нужно поменять строку: InputStream in = ctx.getAssets().open("mycontacts");
Например, если написать так: InputStream in = new FileInputStream(file);
То будет использоваться конкретный файл в памяти телефона. file - это объект класса File.