2011-01-25 38 views
0

我有一个使用BlazeDS的连接到后端Java的Flex应用程序。使用远程处理,我给一个API调用在Oracle数据库上运行的表的SELECT语句(使用传统的JDBC类)。BlazeDS的转换BigDecimal的字符串

表有2列:

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

我的Java API如下:

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; 
} 

在我的Flex的一面,我对这个遥控操作的结果事件的处理程序:

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

奇怪的是,对应于需求列中的值被自动转换成字符串(I调试找到指出,在后端,这些都是BigDecimal)的

有什么建议?

回答

0

确实,Java中的BigDecimal在ActionScript中转换为String,因为您可以在developer guide中阅读。有ActionScript中没有的BigDecimal所以它是唯一的选择 - 你不能把任何的BigDecimal到整数或浮点数。

如果你确信你的价值表现为NUMBER(10,0)具有区间值2,147,483,648 - 2,147,483,647您可以将其转换成Java中的INT - 见下面的代码:

itemArray[1] = ((BigDecimal)rs.getObject(2)).intValue();