Java resultSet.updateRow()不更新数据库

时间:2013-01-11 23:58:46

标签: java derby resultset

很抱歉,如果我的问题很简单,但我不熟悉Java编程。

我有以下问题: 我使用NetBeans IDE创建了一个derby数据库(我转到了Services选项卡 - > JavaDB - > create database)。然后我创建了我的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再次包含来自数据库的正确数据,因此它似乎可以工作......

1 个答案:

答案 0 :(得分:2)

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