抱歉,如果我的问题很琐碎,但我是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();

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

现在到我的问题。我希望将此数据库嵌入到我的应用程序中,因此我将其文件复制到项目位置的foleder“DB”中(复制了Employees文件夹以及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 );

同样,我能够用数据库中的数据填充resultSet(所以一切似乎都可以正常工作),但是当我尝试执行完全相同的更新时:
rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();

更改不保存在数据库中。

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

最佳答案

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

09-04 03:50
查看更多