0

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

该表有 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);
}

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

有什么建议么?

4

1 回答 1

0

确实,Java 中的 BigDecimal 在 ActionScript 中被转换为 String,您可以在开发人员指南中阅读。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();
于 2011-01-25T16:17:04.627 回答