2013-01-11 25 views
2

對不起,如果我的問題是微不足道的,但我是Java編程的新手。Java resultSet.updateRow()不更新數據庫

我有以下問題: 我使用NetBeans IDE創建了一個derby數據庫(我去了Services選項卡 - > JavaDB - > create database)。然後我創建了我的java項目並添加了對derbyclient.jar的引用。 使用這些參數:

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

我設法創建JDBC連接,並能夠填充,與結果從Employees表數據。接下來,我想用這個結果集,所以我寫了更新數據庫:

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

,一切工作正常(數據在數據庫實際上是更新)。

現在我的問題。我希望這個數據庫被嵌入到我的應用程序中,所以我將它的文件複製到我的項目位置(我複製Employees文件夾以及derby.log和derby.properties)中的文件夾「DB」中。我將項目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(); 

變化不保存在數據庫中。

我在做什麼錯?我可以將數據庫文件複製到我的項目位置嗎?但是,然後resultSet運行後查詢包含來自數據庫正確的數據,所以它似乎工作...

+3

你是否正在提交更改('connection.commit()')? – prunge

+0

不,我不是:)非常感謝你的工作。但爲什麼它在我的第一個場景中起作用? (我沒有調用connection.commit) –

回答

2

調用connection.commit()解決了這個問題。

+2

我假設你在第一個場景中使用了自動提交。 –

+0

嗯,我不知道。我描述了我採取的所有步驟(並且它只是將數據庫文件複製到我的項目位置並將derbyclient.jar切換到derby.jar) –