我目前正在使用 HSQLDB 来保存 java 数据。在这些数据中,有一些Double,其中一些可以是NaN
的值(在javadoc中描述为0.0/0.0
)。 HSQLDB 知道如何处理 setDouble
的 setFloat
和 PreparedStatement
中的这些值。问题是,我必须使用 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/