【发布时间】:2014-03-03 15:21:26
【问题描述】:
我在 Windows 7 上运行 Sqlite 并使用 Eclipse 中的 java 程序,尝试将输入文件中的数据加载到 sqlite 数据库表中。 sqlite exe文件、java sqlite JDBC jar文件和数据库文件都在同一个目录下。
我已经阅读了大多数听起来似乎接近回答这个问题但到目前为止还没有解决的帖子。
我已经更改了文件夹权限,因此任何人/每个人都可以更新/更改文件夹(数据库文件所在的位置),但仍然没有乐趣。我已经建立了一个数据库连接(见下面的显示),但现在卡住了,我的想法已经用完了 - 有人可以帮忙吗? 代码在第 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)
【问题讨论】:
-
ConnectionConfig 类中有哪些内容?
-
嗨 Sanjeev,公共类 ConnectionConfig { public static Connection getConnection(){ Connection connection = null;尝试{ Class.forName("org.sqlite.JDBC");连接 = DriverManager.getConnection("jdbc:sqlite:C:\\Program Files (x86)\\SQLite\\SS200.db"); System.out.println("数据库连接建立"); } catch (Exception e) {e.printStackTrace();} 返回连接; } }
-
嗨 Sanjeev,我不能完全让这个评论工作,(新手)上面的代码(对不起格式!)在 connectionConfig 类中创建到 SQLite 数据库的连接,干杯, 马丁
-
是不是一打开数据库连接就先插入数据?还要检查数据库目录,如果有锁文件,可能是数据库被某些操作意外锁定了。
-
嗨 Sanjeev,是的,插入是打开数据库后的第一个操作。至于锁定文件,在目录中看不到任何可能的文件,是在数据库关闭后保留还是只有在数据库打开时才保留?