我正在尝试格式化小数,然后将其保存在字符串的散列图中(与表名相比)。
有谁能告诉我如何将结果集列名数据类型与数据类型String进行比较。
我能得到的壁橱是:
if(metaData.getColumnClassName(i).equals(String.class.getClass()))
我的代码:
while(mResults.next())
{
for (int i = 1; i <= colCount; i++)
{
//ERROR HERE. Try to see if it's string for decimal format on float.
if(mResults.getObject(metaData.getColumnName(i)).equals(String.class))
{
System.out.println("Should be 3.");
}
SQLResults.put(metaData.getColumnName(i), mResults.getString(metaData.getColumnName(i)));
}
}
答案 0 :(得分:1)
使用ResultSet.getMetadata()方法获取ResultSetMetaData,它提供列类型(以及其他信息,如数字精度)。然后您可以根据需要进行转换。列类型作为java.sql.Types int常量返回,而不是Class对象。
答案 1 :(得分:0)
if(mResults.getObject(metaData.getColumnName(i)).equals(String.class))
你的对象如何等于String
类。您可以获得Object#getClass#getName
什么将返回可以是Object Type
或String
的actaul Integer
类名称。像 -
if(mResults.getObject(metaData.getColumnName(i)).getClass().getName.equals("java.lang.String")){}
但它仍然没有任何意义,它会有用。
答案 2 :(得分:0)
if(metaData.getColumnType(i) == Types.VARCHAR)
其中metadata
的类型为:ResultSetMetaData
答案 3 :(得分:0)
if(metaData.getColumnClassName(i).equals("java.lang.Float"))
{
SQLResults.put(metaData.getColumnName(i),
mDF.format(mResults.getFloat(metaData.getColumnName(i))));
}