2011-10-25 22 views
2

當我試圖從ResultSetMetaData 與方法getColumnTypeName獲得列類型類型datetime(x),我越來越 nvarchar。對於其他類型似乎它工作正常。這是一個錯誤?用ResultSetgetString("TYPE_NAME")它似乎沒問題。我在MSSQL2008JDBC - JTDS缺陷?對於類型日期和時間(X)的列

@a_horse_with_no_name

ResultSetMetaData執行查詢時,我得到運行。在那種情況下,我沒有任何表格。這裏是代碼片段

if (resultType == ResultMappingType.QUERY){ // For Query 
    Statement statement = con.createStatement(); 
    ResultSet rs = executeAndValidateQuery(statement, resultName); 
    ResultSetMetaData rsMeta = rs.getMetaData(); 
    for(int i = 1 ; i < rsMeta.getColumnCount()+1 ; i ++){ 
     columnInfo.put(rsMeta.getColumnName(i), rsMeta.getColumnTypeName(i)); 
    } 

}else { //For View & Table 
    ResultSet rsColumns = meta.getColumns(catalog, schemaPattern, resultName, null); 
    while (rsColumns.next()){ 
     columnInfo.put(rsColumns.getString("COLUMN_NAME"), rsColumns.getString("TYPE_NAME")); 
    } 
} 
.... 
private ResultSet executeAndValidateQuery(Statement statement, String query) throws KbValidationException{ 
    ResultSet rs = null; 
    try{ 
     rs = statement.executeQuery(query); 
    } 
    catch(SQLException ex){ 
     throw new KbValidationException(ex.getMessage()); 
    } 
    return rs; 
} 
+0

我很困惑。 ResultSet.getString()與ResultSetMetaData.getColumnTypeName()完全不同。請向我們展示您正在運行的查詢和表格的表格定義。 –

+0

@a_horse_with_no_name我發佈了代碼片段 –

+0

*查詢*如何看起來像你在哪裏得到錯誤的類型名稱? –

回答