У меня проблемы с образцовой программой, которую я пишу.Android Вставить в базу данных sqlite из .csv
Вот мой код:
public void prePopulateDatabase(SQLiteDatabase db, Context helperContext){
String fileIn = "";
String[] file;
ContentValues row = new ContentValues();
AssetManager am;
InputStream is = null;
am = helperContext.getResources().getAssets();
try {
is = am.open("Matrix.csv");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while((fileIn = br.readLine()) != null){
file = fileIn.split(",");
row.put(KEYWORD, file[0]);
row.put(DURATION, file[1]);
row.put(AMOUNT, file[2]);
row.put(DESCRIPTION, file[3]);
row.put(LEVEL_NAME, file[4]);
row.put(CHOICE_FOR_TWO_1, file[5]);
row.put(CHOICE_FOR_TWO_2, file[6]);
row.put(CHOICE_FOR_FIVE_1, file[7]);
row.put(CHOICE_FOR_FIVE_2, file[8]);
row.put(CHOICE_FOR_FIVE_3, file[9]);
row.put(CHOICE_FOR_FIVE_4, file[10]);
row.put(CHOICE_FOR_FIVE_5, file[11]);
insertToDBViaContentValues(db, row);
}//end while
} catch (Exception e) {
e.printStackTrace();
}//end try catch
}//end fxn
public void insertToDBViaContentValues(SQLiteDatabase db, ContentValues row){
procedure("SiteMatrixMultiLevels: INSERT TO DB > "+row.toString());
db.insert(TABLE_SITES, null, row);
}
public void validate(SQLiteDatabase db){
Cursor c = db.rawQuery("select * from "+TABLE_SITES, null);
if(c != null && c.moveToFirst()){
while(!c.isAfterLast()){
data("VALUE: " + c.getString(0) + "," + c.getString(1) + "," + c.getString(2) + "," + c.getString(3) + "," + c.getString(4) + "," + c.getString(5)
+ "," + c.getString(6) + "," + c.getString(7) + "," + c.getString(8) + "," + c.getString(9) + "," + c.getString(10)
+ "," + c.getString(11) + "," + c.getString(12));
c.moveToNext();
}
}
}
, и я получаю ошибку
02-03 20:24:04.537: W/System.err(16437): java.lang.ArrayIndexOutOfBoundsException: length=7; index=7
на
row.put(CHOICE_FOR_FIVE_1, file[7]);
CSV-файл, который я забирающий файлы имеет несколько строк но только следует 2 форматам. Первый 100 имеют такой формат
pkey,keyword,duration,amount,description,A,B,,,,,
, а другой 100 следовать этому формату
pkey,keyword,duration,amount,description,,,C,D,E,F,G
Я не уверен, если им получить ошибку, потому что первый тип формата останавливается только на 7 (так как никакой ценности для C, D, E, F, G).
Любая помощь будет оценена по достоинству. Благодаря!
no value добавить "" (пусто) –
привет Дхаваль благодарит за ваш ответ. Вы предполагаете, что если длина равна 0, я вручную добавляю? Я получаю все свои данные из csv, используя row.put, и насколько это возможно, я хочу сохранить его таким образом. Без использования операторов if, чтобы определить, не имеет ли значение столбца из csv. – momoja
@ user1481694 Правило большого пальца - проверить, существует ли индекс перед его индексированием. – James