我目前正在使用 HSQLDB 来保存 java 数据。在这些数据中,有一些Double,其中一些可以是NaN的值(在javadoc中描述为0.0/0.0)。 HSQLDB 知道如何处理 setDoublesetFloatPreparedStatement 中的这些值。问题是,我必须使用 Statement 对象,而不是预编译的存储过程,而且我找不到让它工作的方法。
如果你有最微小的提示,那将是最受欢迎的:)
谢谢。

编辑:这是我正在使用的一堆代码:

stmt.executeUpdate("insert into Mesh(Id, name, dimension, meshtype, totalVolume, NumberOfCoarseCell) values (identity(), "
                             + "'" + name_ + "',"
                             + dimension_ + "," // this value can be NaN
                             + "'" + type_.toString() + "',"
                             + totalVolume_ + "," // this value can be NaN
                             + numberOfCoarseCells_ + ")");

最佳答案

使用 HSQLDB 1.8.x,您可以使用 (0.0e1/0.0e1) 作为返回 NaN 的表达式。

例如:

create table t (d double)
insert into t values (0.0e1/0.0e1)

对于 HSQLDB 2.1 及更高版本,必须使用 SQL 语句指定属性:
SET DATABASE SQL DOUBLE NAN FALSE

或者作为连接属性:
hsqldb.double_nan=false

关于java - HSQLDB 语句和 Java NaN 翻倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5140371/

10-12 04:31