2013-03-06 45 views
-1

我在嘗試更新ResultSet時遇到問題。 我正在通過JDBC查詢數據庫,並找回不是CONCUR_UPDATABLE的結果集。 我需要在指定的列中將'_'替換爲''。我怎麼能這樣做?如何更新JDBC只讀結果集的行

String value = derivedResult.getString(column).replace("_", " "); 
derivedResult.updateString(column, value); 
derivedResult.updateRow(); 

這對Updatable很好,但如果它是ResultSet.CONCUR_READ_ONLY呢?

編輯:

這將是一個JDBC驅動程序,它調用另一個JDBC驅動,我的問題是,我需要更換的ResultSet的內容,即使它僅僅是前進,還是隻讀。如果我設置scroll_insensitive和updatable,這沒有問題,但有JDBC驅動程序與只向前結果集一起工作。

解決方案:

  • 我應該嘗試移動的結果,一個內存數據庫和替換的內容在那裏。
  • 我是否應該實現像所有其他類一樣行爲的結果集:如果需要,調用底層驅動程序函數並進行修改。

我不想使用resulst之後進行更新或插入。基本上這將在選擇的查詢中完成。

+0

什麼是數據庫,也許更重要的是什麼是查詢? – dkateros 2013-03-06 13:00:17

+0

你是如何創建Statement或PreparedStatement的;這與ResultSet的創建方式有關。 – 2013-03-06 13:03:26

+0

db可能會有所不同,因爲這將用於使用其他jdbc驅動程序的JDBC驅動程序。由於查詢正在改變,列名稱包含有關其內容的信息,從那裏我知道修改內容。 我創建了一個Statement,PreparedStatement類,它爲Statement/PreparedStatement生成底層的JDBC,並從那裏獲取結果。 – 2013-03-06 13:05:57

回答

1

根據我的經驗,更新結果集僅適用於簡單查詢(在單個表上選擇語句)。但是,根據數據庫,這可能會改變。我會首先查閱數據庫文檔。

即使您創建了可更新的自己的結果集,爲什麼您認爲數據庫數據會改變?很可能(幾乎肯定)更新機制使用的代碼不是公有的,只存在於您使用的jdbc驅動程序的結果集實例實現類型中。

我希望以上是有道理的。

+0

查詢將始終選擇 – 2013-03-06 13:07:57

+0

注意'在一張桌子上'部分:) – dkateros 2013-03-06 13:13:05

+0

如上所述[http://docs.oracle.com/cd/A97339_01/doc/java.816/a81354/resltse2.htm #1018228) – 2013-03-06 13:55:27