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

Java resultSet.updateRow()不';更新数据库,java,derby,resultset,Java,Derby,Resultset,很抱歉,如果我的问题是琐碎的,但我是Java编程新手 我有以下问题: 我使用NetBeans IDE创建了一个derby数据库(我进入了服务选项卡->JavaDB->创建数据库)。然后我创建了java项目,并添加了对derbyclient.jar的引用。 使用这些参数: String host = "jdbc:derby://localhost:1527/Employees"; String username = "jarek"; String pass = "aaa"; String hos

很抱歉,如果我的问题是琐碎的,但我是Java编程新手

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

String host = "jdbc:derby://localhost:1527/Employees";
String username = "jarek";
String pass = "aaa";
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 );
我成功地创建了jdbc连接,并能够用表Employees中的数据填充ResultSet。接下来,我想使用此结果集更新数据库,因此我写道:

rs.absolute(rowtoupdate);
rs.updateObject("FIRST_NAME", updatedvalue);
rs.updateRow();
一切正常(数据库中的数据实际上已经更新)

现在来谈谈我的问题。我希望这个数据库嵌入到我的应用程序中,所以我将它的文件复制到项目位置的文件夹“DB”(我复制了Employees文件夹以及derby.log和derby.properties)。我将项目jar文件中的引用从derbyclient.jar更改为derby.jar。之后,我使用了不同的参数:

String host = "jdbc:derby://localhost:1527/Employees";
String username = "jarek";
String pass = "aaa";
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();
更改不会保存在数据库中


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

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

您是否正在提交更改(
connection.commit()
)?不,我不是:)非常感谢您的工作。但是为什么在我的第一个场景中它会起作用呢?(我不是在调用connection.commit)我想在您的第一个场景中,您使用的是自动提交。嗯,我不知道。我描述了我采取的所有步骤(只是将数据库文件复制到我的项目位置,并将derbyclient.jar切换到derby.jar)