gpt4 book ai didi

java - 用Java读取CSV文件: extra line

转载 作者:行者123 更新时间:2023-12-02 06:19:27 24 4
gpt4 key购买 nike

我正在阅读此 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); 是有罪的。只需删除它即可。

最佳答案

不太确定,但我认为 db.execSQL(query) 是导致额外行的原因。

在 while 循环中,您为每一行执行语句。在循环之外,您不需要再次执行查询。

正如我所说,我没有使用过 SQLiteDatabase,但我认为这就是您遇到的问题。

关于java - 用Java读取CSV文件: extra line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com