【发布时间】:2014-05-22 17:16:02
【问题描述】:
我正在尝试将一个真实数组插入到 postgresql 数组中:
表定义为:
String sqlTable = "CREATE TABLE IF NOT EXISTS ccmBlock"
+ " sampleId INTEGER,"
+ " block REAL[])";
插入是:
String sqlInsert = "INSERT INTO ccmBlock"
+ "(sampleId, block) VALUES"
+ "(?,?)";
PreparedStatement preparedStatement = theConnection.prepareStatement(sqlInsert);
preparedStatement.setInt(1, 1);
Object[] theArray = {.11f, .22f, .33f};
Array a = theConnection.createArrayOf("real", theArray);
preparedStatement.setArray(2, a);
我收到一条消息: org.postgresql.util.PSQLException:找不到提供的名称真实的服务器数组类型。
但是在他们的文档页面上: http://www.postgresql.org/docs/8.4/static/datatype-numeric.html
表 8-2。数值类型
名称 StorageSize 描述范围
实数 4 字节可变精度,不精确的 6 位小数精度
【问题讨论】:
-
Java“浮点”字面量的类型是
double,所以是8字节。您是否为您的阵列尝试过{.11f, .22f, .33f}? -
该消息抱怨它找不到服务器的真实类型,而不是数组格式错误。我试过你的建议,结果是一样的。当我第一次尝试应用程序的这一部分时,我使用了浮点数,当我试图让它工作时我变得懒惰了。
-
啊,你说得对,我错过了。但是,postgresql jdbc 驱动程序不知道
"real"类型,显然它被称为float4 -
没错,我搜索了所有我能想到的东西,你在哪里找到的?特别是当它正确创建表格时。
标签: sql arrays postgresql jdbc