我在Windows 7上运行Sqlite并使用Eclipse中的java程序尝试将数据从输入文件加载到sqlite数据库表中。 sqlite exe文件,java sqlite JDBC jar文件和数据库文件都在同一目录下。
我已经阅读了大部分线索,听起来他们已经接近回答这个问题,但到目前为止还没有解决。
我已经更改了文件夹权限,所以任何人/每个人都有更新/更改文件夹(db文件所在的位置)的访问权限,但仍然没有乐趣。我建立了一个数据库连接(见下面的显示),但我现在卡住了,我的想法已经用完了 - 有人可以帮忙吗? 第30行的代码失败
公共类数据库{
public void loadPersonData() {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = ConnectionConfig.getConnection();
preparedStatement = connection
.prepareStatement("INSERT INTO PERSON(PERSON_ID,LAST_NAME,FIRST_NAME,STREET,CITY) "
+ "VALUES(?,?,?,?,?)");
for (PersonData x : ReadPersonData.personList) {
preparedStatement.setInt(1, x.getPersonID());
preparedStatement.setString(2, x.getLastName());
preparedStatement.setString(3, x.getFirstName());
preparedStatement.setString(4, x.getStreet());
preparedStatement.setString(5, x.getCity());
preparedStatement.addBatch();
}
这是第30行 - >>>>>了PreparedStatement.executeBatch();
} catch (Exception e) {
e.printStackTrace();
目前错误消息如下: -
建立数据库连接
java.sql.SQLException:无法打开数据库文件
at org.sqlite.core.DB.throwex(DB.java:859)
at org.sqlite.core.DB.executeBatch(DB.java:760)
at org.sqlite.core.CorePreparedStatement.executeBatch(CorePreparedStatement.java:77)
at Database.loadPersonData(Database.java:30)
at MainApp.main(MainApp.java:16)
java.sql.SQLException:[SQLITE_ERROR] SQL错误或缺少数据库(连接已关闭)
at org.sqlite.core.DB.newSQLException(DB.java:890)
at org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:109)
at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35)
at Database.loadPersonData(Database.java:44)
at MainApp.main(MainApp.java:16)
答案 0 :(得分:0)
我认为存在锁定数据库的锁定文件。 你必须删除它们 转到您的数据库目录并使用" YourDbName-journal"搜索文件。删除它 如果它不起作用,这应该有效确保您一次运行一个连接 并确保每次都关闭连接。
在catch子句之后添加此
finally{
try{
preparedStatement.close();
connection.close();}
catch(Exception e){e.printStackTrace();}}
确保在每个调用连接的方法之后添加此代码,因为sqlite不支持多个连接。