Нужен совет по выбору наполнения бд

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
DimanSS
Сообщения: 11
Зарегистрирован: 26 фев 2014, 14:44

Нужен совет по выбору наполнения бд

Сообщение DimanSS » 18 ноя 2014, 13:24

У меня есть задача написать приложение которое будет искать и выводить данные. Например указано фамилия, имя, отчество, дата рождения. Таких строк 20-30 тысяч. Пользователь вводит фамилию и нажимает поиск, должна выйти строка с ФИО и датой рождения. Обновления раз в неделю. Доступа к интернету нет, необходимо закидывать файл с бд на телефон.
Я вижу 2 решения:
1) из xls парсить в xml на компе, потом парсить в андроиде в базу.
2) на компе xls парсить в csv, создаю бд на компе, и подсовываю бд приложению (не очень вкурил как можно разместить готовую бд в памяти устройства).

Посоветуйте какое решение лучше и оптимальнее сделать. Или может предложите свое, более лучшее решение. Спасибо!

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Нужен совет по выбору наполнения бд

Сообщение KamiSempai » 18 ноя 2014, 17:43

R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

DimanSS
Сообщения: 11
Зарегистрирован: 26 фев 2014, 14:44

Re: Нужен совет по выбору наполнения бд

Сообщение DimanSS » 18 ноя 2014, 17:48

Спасибо за ссылку, это к моему второму решению. Но в том примере при изменении бд придется каждый раз компилить новый apk и устанавливать на устройство, а это не очень хорошо.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Нужен совет по выбору наполнения бд

Сообщение KamiSempai » 18 ноя 2014, 18:01

В примере, что я привел, база копируется из ассетов. Аналогичным способом ее можно скопировать от куда угодно (SD карта, FTP, интернет).
В методе CopyDataBaseFromAsset в самой первой строке открывается InputStream. Если использовать нужный InputStream все должно получиться.

Парсить 20-30 тысяч строк в базу на телефоне займет много времени, лучше проделать эту работу на компьютере.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

DimanSS
Сообщения: 11
Зарегистрирован: 26 фев 2014, 14:44

Re: Нужен совет по выбору наполнения бд

Сообщение DimanSS » 19 ноя 2014, 09:19

Большое спасибо! Буду пробовать. Насколько я понял мне необходимо методом 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();

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Нужен совет по выбору наполнения бд

Сообщение KamiSempai » 19 ноя 2014, 16:15

Нет, не верно. DB_PATH - это путь к папке во внутренней памяти где должна лежать база.
Вам нужно поменять строку: InputStream in = ctx.getAssets().open("mycontacts");

Например, если написать так: InputStream in = new FileInputStream(file);
То будет использоваться конкретный файл в памяти телефона. file - это объект класса File.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить