Java 在Android Studio中从CSV文件生成SQL lite数据库
我得到了一个CSV文件,基本上是一个带有代码的城市列表。 在我的应用程序中,用户在写他们的出生城市时,会出现一个城市列表,当选择该城市的代码用于其他内容时,会给出建议。 我可以将.csv文件移动到Android Studio文件夹中,并将其用作使用sql lite创建的数据库吗? 如果没有,我应该在AndroidStudio中创建SQLLite数据库(一个带有SqlOpenHelper和一些查询的DatabaseManager类,如果我得到了它),然后复制.csv吗?我怎么能“复制”它呢Java 在Android Studio中从CSV文件生成SQL lite数据库,java,android,sql,sqlite,Java,Android,Sql,Sqlite,我得到了一个CSV文件,基本上是一个带有代码的城市列表。 在我的应用程序中,用户在写他们的出生城市时,会出现一个城市列表,当选择该城市的代码用于其他内容时,会给出建议。 我可以将.csv文件移动到Android Studio文件夹中,并将其用作使用sql lite创建的数据库吗? 如果没有,我应该在AndroidStudio中创建SQLLite数据库(一个带有SqlOpenHelper和一些查询的DatabaseManager类,如果我得到了它),然后复制.csv吗?我怎么能“复制”它呢 编辑:
编辑:很抱歉,但我意识到我的CSV文件有太多的列,手动添加这些列会很难看和累人。所以我使用了SQLite的DB浏览器,现在我得到了一个.DB文件。我可以把它放在一个特定的数据库文件夹中,然后在我的应用程序中查询它吗?尝试将.csv信息添加到数据库中
FileReader file = new FileReader(fileName);
BufferedReader buffer = new BufferedReader(file);
String line = "";
String tableName = "TABLE_NAME";
String columns = "_id, name, dt1, dt2, dt3";
String str1 = "INSERT INTO " + tableName + " (" + columns + ") values(";
String str2 = ");";
db.beginTransaction();
while ((line = buffer.readLine()) != null) {
StringBuilder sb = new StringBuilder(str1);
String[] str = line.split(",");
sb.append("'" + str[0] + "',");
sb.append(str[1] + "',");
sb.append(str[2] + "',");
sb.append(str[3] + "'");
sb.append(str[4] + "'");
sb.append(str2);
db.execSQL(sb.toString());
}
db.setTransactionSuccessful();
db.endTransaction();
我可以将.csv文件移动到Android Studio文件夹中并使用
它是用SQLLite创建的数据库吗
不
sqlite数据库(即文件)必须格式化,以便sqlite例程可以访问其中包含的数据。e、 g.文件的前16个字节必须是SQLite格式3\000,依此类推,如所示
如果没有,我应该在androidstudio中创建sqllite数据库吗
带有SqlOpenHelper的DatabaseManager类和一些查询(如果有)
它),然后复制.csv
您有多种选择,例如:-
private void BuildFormulaValues(){
mFormulaValues=新的ArrayList();
mYears=新的ArrayList();
StringBuilder错误=新建StringBuilder();
试一试{
InputStream is=getAssets().open(公式值文件);
BufferedReader bf=新的BufferedReader(新的InputStreamReader(is));
弦线;
而((line=bf.readLine())!=null){
if(line.substring(0,0).equals(“#”){
继续;
}
字符串[]值=行。拆分(“,”);
如果(values.length==5){
试一试{
mFormulaValues.add(
新公式价值(
这
Long.parseLong(值[0]),
Long.parseLong(值[1]),
Long.parseLong(值[2]),
Long.parseLong(值[3]),
Long.parseLong(值[4])
)
);
}捕获(数字格式){
if(errors.length()>0){
错误。追加(“\n”);
}
errors.append(
这是.getResources().getString(
R.string.无效\u公式\u值\u非数值)
);
继续;
}
添加(值[0]);
}否则{
if(errors.length()>0){
错误。追加(“\n”);
errors.append(
getResources().getString(
R.string.无效(公式值行)
);
}
}
}
}捕获(ioe异常ioe){
ioe.printStackTrace();
}
if(errors.length()>0){
String emsg=“注意:由于以下问题,计算可能不准确:-\n\n”+
错误。toString();
Toast.makeText(
这
emsg,
吐司长度
).show();
}
}
这是否回答了您的问题?
# 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
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();
}
}