gpt4 book ai didi

java - 使用 jdbc 时如何调用预配置的 postgres 函数?

转载 作者:行者123 更新时间:2023-11-29 12:02:16 24 4
gpt4 key购买 nike

我正在尝试使用 Java 代码调用预配置的函数。这是我正在使用的代码:

Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://" + ip + ":5432/" + db,
username, password);
c.setAutoCommit(false);
stmt = c.createStatement();
stmt.executeQuery( "SELECT public.myFunc ("1","2","3"));

stmt.close();
c.close();

函数本身有一些验证,最后是一个 INSERT 命令。当我从 pgAdmin 运行查询时,我可以看到该行已添加,但是当我运行与上面相同的查询时,没有任何反应。

还尝试用 execute 和 executeUpdate 替换 executeQuery。

最佳答案

您可以阅读有关 Calling Stored Functions 正确方法的文档,在你的情况下你可以使用:

CallableStatement callStmt = c.prepareCall("{call myFunc(?, ?, ?)}");
callStmt.setString(1, "1");
callStmt.setString(2, "2");
callStmt.setString(3, "3");
callStmt.execute();
callStmt.close();

关于你的代码很重要

  • 如果您打算使用 Integer 1 而不是 String "1",则必须将 callStmt.setString 更改为 callStmt。 setInt
  • postgres默认的schema是public的所以不用提,如果用其他schema可以提
  • Java中的引号"应该用\"转义
  • 不要将属性与查询连接起来,这会导致语法错误和 SQL 注入(inject)

关于java - 使用 jdbc 时如何调用预配置的 postgres 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51493813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com