我讀這個CSV:閱讀CSV文件:額外的行
A;San Antonio;Tercer Barrio
B;Camino de la Miranda;Campus
C;San Lázaro;Cementerio
E;Cristo;H. Río Carrión
H;H. San Telmo;H. Río Carrión
M;Plaza de León;Monte el Viejo
P;Allende el Río;Campus
,我想用這個方法在Android中填充SQLite數據庫:
private void insertRoutes(SQLiteDatabase db) {
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(context.getAssets().open(SQL_FILE_ROUTES)));
String query =
"insert into routes (name, rfrom, rto) values (?, ?, ?)";
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(query);
String line;
while ((line = reader.readLine()) != null) {
String[] dic = line.split(";");
stmt.bindString(1, dic[0]);
stmt.bindString(2, dic[1]);
stmt.bindString(3, dic[2]);
stmt.execute();
stmt.clearBindings();
}
db.execSQL(query);
db.setTransactionSuccessful();
} catch (IOException e) {
e.printStackTrace();
} finally {
db.endTransaction();
}
}
它 「作品」和我的數據庫得到填充,但與額外的行。這是我檢查sqlite數據庫的結果:
sqlite> select * from routes;
1|A|San Antonio|Tercer Barrio
2|B|Camino de la Miranda|Campus
3|C|San Lázaro|Cementerio
4|E|Cristo|H. Río Carrión
5|H|H. San Telmo|H. Río Carrión
6|M|Plaza de León|Monte el Viejo
7|P|Allende el Río|Campus
8|||
有8行,但CSV文件只有7行。我做錯了什麼? 謝謝。
編輯
我檢查了文件。它具有7行:
wc default_android_routes.csv
7 25 198 default_android_routes.csv
編輯
像@flopo說,db.execSQL(query);
是有罪的。只要刪除它。
您確定CSV文件底部沒有空行嗎? – Yjay
是的,我已經檢查過了(這是首先想到的)。 –
您是否已經將系統放在您的循環中,以便您可以清楚地看到它在解析什麼以及循環在java端運行了多少次?也有可能你的表已經有了一個條目嗎? –