У меня есть задача написать приложение которое будет искать и выводить данные. Например указано фамилия, имя, отчество, дата рождения. Таких строк 20-30 тысяч. Пользователь вводит фамилию и нажимает поиск, должна выйти строка с ФИО и датой рождения. Обновления раз в неделю. Доступа к интернету нет, необходимо закидывать файл с бд на телефон.
Я вижу 2 решения:
1) из xls парсить в xml на компе, потом парсить в андроиде в базу.
2) на компе xls парсить в csv, создаю бд на компе, и подсовываю бд приложению (не очень вкурил как можно разместить готовую бд в памяти устройства).
Посоветуйте какое решение лучше и оптимальнее сделать. Или может предложите свое, более лучшее решение. Спасибо!
Нужен совет по выбору наполнения бд
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Нужен совет по выбору наполнения бд
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Нужен совет по выбору наполнения бд
Спасибо за ссылку, это к моему второму решению. Но в том примере при изменении бд придется каждый раз компилить новый apk и устанавливать на устройство, а это не очень хорошо.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Нужен совет по выбору наполнения бд
В примере, что я привел, база копируется из ассетов. Аналогичным способом ее можно скопировать от куда угодно (SD карта, FTP, интернет).
В методе CopyDataBaseFromAsset в самой первой строке открывается InputStream. Если использовать нужный InputStream все должно получиться.
Парсить 20-30 тысяч строк в базу на телефоне займет много времени, лучше проделать эту работу на компьютере.
В методе CopyDataBaseFromAsset в самой первой строке открывается InputStream. Если использовать нужный InputStream все должно получиться.
Парсить 20-30 тысяч строк в базу на телефоне займет много времени, лучше проделать эту работу на компьютере.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Нужен совет по выбору наполнения бд
Большое спасибо! Буду пробовать. Насколько я понял мне необходимо методом InputStream скопировать (в моем случае из встроенной памяти устройства) бд к себе в приложение, и путь будет такой: "//data//data//%s//databases//"
А нельзя сразу прописывать путь к базе когда она находиться не в assets? Необходимо будет каждый раз копировать бд?
Например сейчас я открываю бд из assets так:
Правильно ли будет изменить его на это:
А нельзя сразу прописывать путь к базе когда она находиться не в 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();
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Нужен совет по выбору наполнения бд
Нет, не верно. DB_PATH - это путь к папке во внутренней памяти где должна лежать база.
Вам нужно поменять строку: InputStream in = ctx.getAssets().open("mycontacts");
Например, если написать так: InputStream in = new FileInputStream(file);
То будет использоваться конкретный файл в памяти телефона. file - это объект класса File.
Вам нужно поменять строку: InputStream in = ctx.getAssets().open("mycontacts");
Например, если написать так: InputStream in = new FileInputStream(file);
То будет использоваться конкретный файл в памяти телефона. file - это объект класса File.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.