我正在使用的java应用程序使用https://bitbucket.org/xerial/sqlite-jdbc版本3.8.10.2为某些数据使用本地SQLite数据库。
我解析excel电子表格中的数据,然后插入数据库。请求构建如下:
String request = "INSERT INTO 'table' ('col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8', 'col9', 'col10') VALUES";
for(Data d : dataToInsert){
request += " ('" + d.getCol1().replaceAll("'", "''") +"', '" + d.getCol2().replaceAll("'", "''") +"', '" + d.getCol3().replaceAll("'", "''") +"', '" + d.getCol4().replaceAll("'", "''") +"', '" + d.getCol5().replaceAll("'", "''") +"', '" + d.getCol6().replaceAll("'", "''") +"', '" + d.getCol7().replaceAll("'", "''") +"', '" + d.getCol8().replaceAll("'", "''") +"', '" + d.getCol9().replaceAll("'", "''") +"', '" + d.getCol10().replaceAll("'", "''") +"'),";
}
request = request .substring(0, request .length()-1) + ";";
我这样做的原因是因为我一次插入大量行(约1475)。在运行更新之前,我通过控制台输出,所以我已经完成了请求。
通过java运行会导致此异常:
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near ",": syntax error)
但是,我也在使用此应用http://sqlitebrowser.org/手动监控数据库。使用所述应用程序中的“执行SQL”功能,我使用我的代码构建的请求正常工作,并且表格填充正确。
什么可能导致更新请求在所述应用程序中工作,而不是从Java应用程序运行时?