ResultSet将结果对象数据类型与String进行比较

时间:2013-05-17 04:36:28

标签: java

我正在尝试格式化小数,然后将其保存在字符串的散列图中(与表名相比)。

有谁能告诉我如何将结果集列名数据类型与数据类型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)));
        }
    }

4 个答案:

答案 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 TypeString的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))));
}