2011-07-14 35 views
4

我需要根據JDBC調用生成的結果集來解析通常包含整數的數據庫列的值。但是,列中的一個特定行有兩個整數(即「48,103」)。該列上resultSet.getInt()的返回值是什麼?resultSet.getInt()返回一個包含兩個整數的字符串的值

+0

數據庫中列的定義是什麼 - 某種'varchar'? –

+0

你嘗試過嗎? –

+0

Eng.Fouad - 我目前正在解決一些其他問題,這些問題阻止我立即進行測試 - 試圖首先在這裏問一問先行先試。 – DaveWeber

回答

5

它會拋出異常。

我想你在這裏採取了錯誤的做法。 getXXX()應該匹配表的數據類型。表中的數據類型是否列爲VARCHAR?如果出現這種情況,您應該使用getString()來獲取數據,然後在存在,的情況下使用String.spilt(",")解析數據(您可以使用String.indexOf()來驗證逗號是否存在)。

+0

這聽起來不錯。感謝您的反饋 - 我正在更新一些現有的代碼,所以也許getInt以前工作過,他們知道他們只處理列中的一個值。 – DaveWeber

+0

@DaveWeber - 不客氣。你有權查看錶格的模式嗎?驗證數據類型在那裏列出。 – CoolBeans

+0

我應該有訪問權限(這是一個syscolumns表),稍後會嘗試這樣做。謝謝你的幫助。 – DaveWeber

1

我希望它會拋出異常。如果它給你一個價值,它不會是你想要的。我會把值作爲字符串並解析它們,在逗號和修剪空格處分割。

4

你肯定會得到一個SQLException(或可能是NumberFormatException)。實際的interface只是說結果集將返回「指定列的值......作爲int」。確切的細節將是具體實現,但我懷疑你會從"48, 103"的值得到任何明智的。

(個人而言,如果驅動程序允許您在該列上調用getInt,即使對於「明智」值,也是一個錯誤。即使字符串是int的字符串表示形式,字符串也不是int,並且轉換應該由開發人員手動完成。)

+0

我認爲NumberFormat更可能,因爲SQLExceptions只發生在數據庫訪問錯誤。它抓住了價值,這只是解析數字時的問題。但我認爲你對getInt部分不適用於文本列是正確的。 –

+0

這很有意義。感謝您的反饋。 – DaveWeber

0

我相信這是一個NumberFormatException

相關問題