java - 将 java String[] 设置为 postgres 准备语句时出错

标签 java postgresql jdbc

我正在尝试将一个字符串数组插入到 Postgres 中。我从 Postgres 收到无效类型错误。

public static void main(String[] args) throws SQLException {
    String[] skus = { "0514", "0414", "0314", "0214", "0114", "1213", "1113", "1013", "0913", "0813", "0713", "0613" };
    String sqlString = "Insert into dbo.Inventory_Metrics skus values(?)";
    Connection conn = DriverManager.getConnection(getPostgresConnUrl());
    PreparedStatement ps = conn.prepareStatement(sqlString);

    //THIS NEXT LINE THROWS AN ERROR

    ps.setObject(1, skus, java.sql.Types.NVARCHAR, skus.length);
    int status = ps.executeUpdate();
    ps.close();

    System.out.print(status);
}
public static String getPostgresConnUrl() {
    String database = "mycode";
    String userName = "xxxxxxxx";
    String password = "xxxxxxxx";
    return "jdbc:postgresql://192.168.0.50:5432/" + database + "?user=" + userName + "&password=" + password;

}

最佳答案

您必须使用 JDBC array API ,根据文档。

您不能只setObject JDBC 中的数组。如果这就是它的工作方式,那就太好了,但事实并非如此。您需要专门处理数组。

Array jdbcSkus = con.createArrayOf("VARCHAR", skus);
pstmt.setArray(2, jdbcSkus);

关于java - 将 java String[] 设置为 postgres 准备语句时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999014/

相关文章:

java - Spring 批处理、XA 和本地事务

sql - Postgres : get random entries from table - too slow

php - 在 php 代码下调用 pg_dump 时输出为空

java - 如何找到 Oracle 数据库的 URL?

java - 使用JSP/MySQL实现自动竞价功能

java - 如何在列名称中使用下划线进行 JPQL 查询?

java - 有没有办法用软键盘将RecyclerView向上推? (聊天)

java - 如何为JButton设置自定义渐变?

ruby-on-rails - postgresql 不接受端口 5432 上的 tcp/ip for rails on linux

mysql - 错误数据库 :40 - java. sql.SQLNonTransientConnectionException