2

抱歉,如果我的问题微不足道,但我是 Java 编程新手。

我有以下问题:我使用 NetBeans IDE 创建了一个 derby 数据库(我转到“服务”选项卡 -> JavaDB -> 创建数据库)。然后我创建了我的 java 项目并添加了对 derbyclient.jar 的引用。使用这些参数:

String host = "jdbc:derby://localhost:1527/Employees";
String username = "jarek";
String pass = "aaa";

我设法创建了 jdbc Connection,并能够使用表Employees 中的数据填充ResultSet。接下来我想使用这个结果集更新数据库,所以我写道:

rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();

一切正常(数据实际上已在数据库中更新)。

现在到我的问题。我希望将此数据库嵌入到我的应用程序中,因此我将其文件复制到项目位置的文件夹“DB”中(我复制了员工文件夹以及 derby.log 和 derby.properties)。我将项目 jar 文件中的引用从 derbyclient.jar 更改为 derby.jar。之后我使用了不同的论点:

String host = "jdbc:derby:DB//Employees";
String username = "jarek";
String pass = "aaa";
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
Class.forName( driver );
connection = DriverManager.getConnection( url, username, password );

我再次能够使用数据库中的数据填充结果集(所以一切似乎都有效)但是当我尝试执行完全相同的更新时:

rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();

更改不会保存在数据库中。

我究竟做错了什么?这可能是由于我将数据库文件复制到我的项目位置引起的吗?但是在对 Statement 运行查询后再次 resultSet 包含来自数据库的正确数据,因此它似乎可以工作......

4

1 回答 1

2

调用 connection.commit() 解决了这个问题。

于 2013-01-12T07:33:40.890 回答