java - 将 java 整数数组作为参数传递给 postgres 过程

标签 java sql arrays database postgresql

定义的java整型数组如下,

Integer[] details = {5097, 5098, 5099, 5100, 5101, 5102, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130};

然后使用连接对象将java数组转换为postgres类型数组,如下所示,

connection = (Connection) DriverManager.getConnection(MySQLURL,"postgres","admin");
Array dArray = connection.createArrayOf("INT", details);

之后将 dArray 作为参数传递给 postgres 过程,如下所示,

String simpleProc = "{ call SMS.P_DELETE_DATA("+dArray+") }";
        CallableStatement cs = connection.prepareCall(simpleProc);
        cs.execute();

我写的postgres过程签名如下,

CREATE FUNCTION SMS.P_DELETE_WORKPLAN_FOR_LESSON(P_LESSONS INT[]) 
 RETURNS VOID AS $$

但是当我运行java代码时它会抛出格式错误的过程/函数调用......

有人建议我解决这个问题。

提前致谢。

最佳答案

Hełm,您应该使用方法而不是在 sql 字符串中设置 Sql 语句的参数。 尝试这样的事情:

        connection = (Connection) DriverManager.getConnection(MySQLURL,"postgres","admin");
        Array dArray = connection.createArrayOf("INT", details);
        String simpleProc = "{ call SMS.P_DELETE_DATA(?) }";
        CallableStatement cs = connection.prepareCall(simpleProc);
        cs.setArray(1, dArray);
        cs.execute();
        cs.close();

关于java - 将 java 整数数组作为参数传递给 postgres 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082108/

相关文章:

java - 为什么我的 InOrder 排序的 ArrayList 不能递归地构建 LinkedBinaryTree?

java - 带有 Spring Webflow : ClassNotFoundException: org. springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean 的 Maven 项目

mysql - LAST_INSERTED_ID 的安全性

ios - 在结构中附加数组 - Swift 2.0

java - 为什么在 Java 中必须将字节上的按位运算强制转换为字节?

php - TYPO3 扩展存储库截断查询

sql - 我无法使这个看似简单的插入查询起作用

python - 组合和规范化来自多个多维数组的数据的最快方法

javascript - 接收不同数组元素时数组中的相同 JSON 对象

java - Scala 枚举扩展特征