0

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

谁能告诉我如何将结果集列名数据类型与数据类型字符串进行比较。

我能得到的衣柜是:

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

4 回答 4

1

使用 ResultSet.getMetadata() 方法获取ResultSetMetaData,它提供了列类型(以及其他信息,例如数值精度)。然后,您可以根据需要进行转换。列类型作为java.sql.Types int 常量返回,而不是 Class 对象。

于 2013-05-17T04:49:37.170 回答
0
if(mResults.getObject(metaData.getColumnName(i)).equals(String.class))

你的对象怎么可能等于String类。你可以得到Object#getClass#getName什么会返回actaul的类名Object Type,可以是Stringor Integer。就像是 -

if(mResults.getObject(metaData.getColumnName(i)).getClass().getName.equals("java.lang.String")){}

但它仍然没有任何意义,它将在哪里有用。

于 2013-05-17T04:43:18.590 回答
0

你试过像:

if(metaData.getColumnType(i) == Types.VARCHAR) 

metadata类型:ResultSetMetaData

于 2013-05-17T04:52:30.557 回答
0
if(metaData.getColumnClassName(i).equals("java.lang.Float"))
{
    SQLResults.put(metaData.getColumnName(i), 
        mDF.format(mResults.getFloat(metaData.getColumnName(i))));
}
于 2013-05-17T04:55:36.990 回答