blazeds将BigDecimal转换为字符串

时间:2011-01-25 10:44:22

标签: oracle blazeds bigdecimal

我有一个Flex应用程序,它使用blazeds连接到Java后端。使用远程处理,我调用API来在Oracle数据库中的表(使用传统JDBC类)上运行SELECT语句。

该表有两列:

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

奇怪的是,与DEMAND列对应的值会自动转换为字符串(我调试后发现在后端,这些是BigDecimal)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

确实如此,Java中的BigDecimal在ActionScript中转换为String,您可以在developer guide中阅读。 ActionScript中没有BigDecimal,因此它是唯一的选项 - 您无法将任何BigDecimal转换为int或float。

如果您确定表示为NUMBER(10,0)的值具有-2,147,483,648 - 2,147,483,647区间的值,则可以将其转换为java中的int - 请参阅下面的代码:

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