【问题标题】:Mapping PostgreSQL text[][] type and Java type映射 PostgreSQL text[][] 类型和 Java 类型
【发布时间】:2012-05-31 09:53:17
【问题描述】:

我有一个 Postgres 表,其中包含 text[][] 类型的列。在 JDBC 代码中,我使用了一个字符串数组,但一个异常告诉我这两个不匹配。如果这些类型之间没有映射,您能否建议字符串数组使用 Postgres 类型?

这是代码:

String list = "'{";
        for(int i=0; i<array.length; i++) {
            list+=prodotti[i]+",";
        }
        list+="}'";

        preparedStm.setString(4, list);

【问题讨论】:

  • 您能否通过插入一些代码进一步说明您的情况?
  • 一个String 数组(或String[])与text[][] 不匹配,如果它可以工作,它可以是text[],或者你应该在Java 中使用String[][]。我并不是说它会起作用,但至少要匹配你的数据类型。
  • 您应该包含示例数据和确切的错误消息。会更容易为您提供帮助。
  • 错误只是告诉我该列的类型为 text[] 但表达式的类型为字符变化。我已经用引发异常的部分代码编辑了我的消息
  • verbatim 错误消息应该是您问题的关键部分。提到textcharacter varying 的部分可以帮助快速解决这个问题。

标签: java string postgresql jdbc multidimensional-array


【解决方案1】:

要了解多维 PostgreSQL 数组类型,请考虑以下quote from the manual

当前的实现不强制声明的数量 尺寸。特定元素类型的数组都是 被认为是同一类型,无论大小或数量 方面。因此,在中声明数组大小或维数 CREATE TABLE 只是文档;它不影响运行时 行为。

在内部,text[]text[][] 的类型与 PostgreSQL 相同。 如果该列实际上包含二维文本数组,则您必须匹配 Java 中的维度。但它也可以包含 1 维或 3 维数组。 PostgreSQL 会允许的。

另请注意,textcharacter varying (varchar) 在 PostgreSQL 中是不同的数据类型(当varchar 没有长度修饰符时,其作用基本相同)。从阅读 character types in the manual 开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多