2013-05-17 67 views
0

我想格式化一個小數,然後將其保存在一個字符串散列表(與表名相比)。ResultSet比較結果對象的數據類型字符串

誰能告訴我如何將結果集列名稱數據類型與數據類型字符串進行比較。

我能得到的衣櫃是:

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))); 
     } 
    } 
+2

普萊斯再次解釋你想做什麼?列名數據類型在上下文之外沒什麼意義。 –

+0

SQL查詢返回結果集。我試圖比較按列設置的結果的數據類型,但不知道如何。 IF語句有些問題。 –

回答

0
if(metaData.getColumnClassName(i).equals("java.lang.Float")) 
{ 
    SQLResults.put(metaData.getColumnName(i), 
     mDF.format(mResults.getFloat(metaData.getColumnName(i)))); 
} 
0
if(mResults.getObject(metaData.getColumnName(i)).equals(String.class)) 

怎麼可能你的對象等於String類。你可以得到Object#getClass#getName什麼會返回類別actaul的名字Object Type可以是StringInteger。類似的東西 -

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

但是,它仍然沒有任何意義,它會在哪裏有用。

+0

我試圖找到結果集數據類型。 –

+0

你知道你的數據庫coulmn的細節,對吧?所以可以映射它。爲什麼你需要再次確認? –

1

使用ResultSet.getMetadata()方法獲取ResultSetMetaData,它提供了列類型(以及其他信息,例如數字精度)。您可以根據需要進行轉換。列類型作爲int常量返回爲java.sql.Types,而不是Class對象。

+1

是的,根據列類型OP應該使用相關的方法來檢索數據類型。像getInt,getString等 – Thihara

0

你嘗試過這樣的:

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

其中metadata的類型爲:ResultSetMetaData