Можно ли просто переместить файл .csv в папку Android Studio и просто использовать
это как база данных сделанная с sql lite?
номер
База данных sqlite, т. Е. Файл, должна быть отформатирована так, чтобы подпрограммы SQLite могли получить доступ к содержащимся в ней данным. например первые 16 байтов файла ДОЛЖНЫ БЫТЬ формат SQLite 3 \ 000 и т. д. согласно Формат файла базы данных
Если нет, следует ли создавать базу данных sql lite в Android Studio (
Класс DatabaseManager с SqlOpenHelper и некоторые запросы, если я получил
это), затем скопируйте .csv?
У вас есть различные варианты, например, : -
Вы можете скопировать файл csv в соответствующее место, чтобы он был частью пакета (например, папка assets), а затем иметь подпрограмму для генерации соответствующих строк в соответствующих таблицах. Это потребует создания базы данных в приложении.
Вы можете просто жестко закодировать вставки в приложении. Опять же, это потребует создания базы данных в приложении.
Вы можете использовать инструмент SQLite для создания предварительно заполненной базы данных, скопировать ее в папку ресурсов (assets / database, если используется SQLiteAssetHelper) и скопировать базу данных из папки активов. В этом случае не нужно иметь CSV-файл.
Пример варианта 1
В качестве примера, близкого к варианту 1 (хотя данные не хранятся в базе данных), следующий код извлекает данные из файла csv из папки активов.
Этот параметр используется в этом случае, поскольку файл изменяется на ежегодной основе, поэтому изменения файла и последующее распространение приложения применяют изменения.
Файл выглядит так: -
# This file contains annual figures
# 5 figures are required for each year and are comma seperated
# 1) The year to which the figures are relevant
# 2) The annualised MTAWE (Male Total Average Weekly Earnings)
# 3) The annual Parenting Payment Single (used to determine fixed assessment)
# 4) The fixed assessment annual rate
# 5) The Child Support Minimum Annual Rate
# Lines starting with # are comments and are ignored
2006,50648,13040,1040,320
2007,52073,13315,1102,330
2008,54756,13980,1122,339
2009,56425,13980,1178,356
2010,58854,14615,1193,360
2011,61781,15909,1226,370
2012,64865,16679,1269,383
2013,67137,17256,1294,391
2014,70569,18197,1322,399
2015,70829,18728,1352,408
2016,71256,19011,1373,414
2017,72462,19201,1390,420
2018,73606,19568,1416,427
Он хранится в папке активов приложения как year_changes.txt Следующий код используется для получения значений (которые можно легко добавить в таблицу): -
private void BuildFormulaValues() {
mFormulaValues = new ArrayList<>();
mYears = new ArrayList<>();
StringBuilder errors = new StringBuilder();
try {
InputStream is = getAssets().open(formula_values_file);
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = bf.readLine()) != null ) {
if (line.substring(0,0).equals("#")) {
continue;
}
String[] values = line.split(",");
if (values.length == 5) {
try {
mFormulaValues.add(
new FormulaValues(
this,
Long.parseLong(values[0]),
Long.parseLong(values[1]),
Long.parseLong(values[2]),
Long.parseLong(values[3]),
Long.parseLong(values[4])
)
);
} catch (NumberFormatException e) {
if (errors.length() > 0) {
errors.append("\n");
}
errors.append(
this.getResources().getString(
R.string.invalid_formula_value_notnumeric)
);
continue;
}
mYears.add(values[0]);
} else {
if (errors.length() > 0) {
errors.append("\n");
errors.append(
getResources().getString(
R.string.invalid_formula_value_line)
);
}
}
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
if (errors.length() > 0) {
String emsg = "Note CS CareCalculations may be inaccurate due to the following issues:-\n\n" +
errors.toString();
Toast.makeText(
this,
emsg,
Toast.LENGTH_SHORT
).show();
}
}