我有一個查詢數據庫和結果通過java.sql.ResultSet
獲得,因爲這個查詢是動態的,列數返回可能是5或7,在過去與相同它的代碼生成一個「列未發現異常」,並載於以下陷阱:ResultSet「未找到列」與c3p0
try{
sTemp = this.rsResults.getString("col3");
}catch(Exception e){}
但現在用相同的try和catch(唯一的區別是,現在我使用combopooldatasource
及其連接) ,我得到了兩個不屬於捕獲的例外。
我該如何改進這一點,有沒有更好的方法來檢查列是否存在? c3p0是否必須強制測試基於(SQLState: S0022) column not found error
的連接?
Error n1 - in the com.mchange.v2.c3p0.impl.NewProxyResultSet.getString qlUtils.toSQLException() - Attempted to convert SQLException to SQLException. Leaving it alone. [SQLState: S0022; errorCode: 0]
java.sql.SQLException: Column 'col3' not found.
Error n2 - DefaultConnectionTester.statusOnException() - Testing a Connection in response to an Exception:
java.sql.SQLException: Column 'col3' not found.
PS:使用的驅動程序是一樣的org.gjt.mm.mysql.Driver
感謝您的迴應,ResultSetMetaData如果罰款檢查col3是否存在,但col3更改它在select語句中的位置。ResultSet的getString方法非常完美,因爲如果列不存在,將返回異常,如http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getString(java .lang.String),我的問題是在使用c3p0時出現這種特殊的異常。 – AndreFonseca
@AndreFonseca請檢查我的更新。 –
我不喜歡Throwable,因爲我不想記錄任何東西,並且不得不處理任何可能出現的錯誤和異常,除了未找到的列以外。我會修改源代碼,這是最好的方法。 – AndreFonseca