2
當我試圖從ResultSetMetaData
與方法getColumnTypeName
獲得列類型類型date
和time(x)
,我越來越 nvarchar
。對於其他類型似乎它工作正常。這是一個錯誤?用ResultSet
getString("TYPE_NAME")
它似乎沒問題。我在MSSQL2008
JDBC - 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;
}
我很困惑。 ResultSet.getString()與ResultSetMetaData.getColumnTypeName()完全不同。請向我們展示您正在運行的查詢和表格的表格定義。 –
@a_horse_with_no_name我發佈了代碼片段 –
*查詢*如何看起來像你在哪裏得到錯誤的類型名稱? –