2011-01-25 4 views
0

私はblazedsを使ってJavaバックエンドに接続するFlexアプリケーションを持っています。リモーティングを使用して、Oracleデータベースで(従来のJDBCクラスを使用して)テーブルに対してSELECT文を実行するAPIを呼び出します。blazedsはBigDecimalを文字列に変換します

表には、2列があります。次のように

PRODUCT_CODE of type NVARCHAR2(32) and 
DEMAND of type NUMBER(10, 0) 

私のJava APIは、次のとおりです。

:私のFlex側で

public List<?> getQueryResult(String query) { 
    Connection conn = DriverManager.getConnection(connStr, userName, password); 
    Statement stmt = conn.createStatement(); 
    ResultSet rs = stmt.executeQuery(query); 

    ArrayList<?> result = new ArrayList<?>(); 
    while(rs.next()) { 
    Object[] itemArray = new Object[2]; 
    itemArray[0] = rs.getObject(1); 
    itemArray[1] = rs.getObject(2); 
    result.add(itemArray); 
    } 

    return result; 
} 

、私はこの遠隔操作の結果イベントのハンドラを持っています

private function onResult(e:ResultEvent) : void { 
    var result:ArrayCollection = (e.result as ArrayCollection); 
} 

奇妙なことに、DEMAND列に対応する値は自動的に文字列に変換されます(私はデバッグしてバックエンドでは、これらはBigDecimalでした)

何か提案がありますか?

答えて

0

はい、実際には、developer guideで読めるように、JavaのBigDecimalはActionScriptでStringに変換されます。 ActionScriptにはBigDecimalはありませんので、唯一のオプションです。BigDecimalをintまたはfloatに変換することはできません。

itemArray[1] = ((BigDecimal)rs.getObject(2)).intValue(); 
: - あなたは、Javaのintに変換することができます2147483647 - 以下のコードを参照してください、あなたの値はNUMBER(10,0)のように表されていることを確認している場合は

は-2147483648間隔の値を持っています

関連する問題