postgresql 中调用 java 函数过程

注册入口

CREATE FUNCTION sqlj.java_call_handler()
RETURNS language_handler AS ‘pljava’
LANGUAGE C;

注册入口函数在 pljava 文件夹下

创建language

CREATE TRUSTED LANGUAGE java HANDLER sqlj.java_call_handler;
调用 CreateProceduralLanguage,会在 pg_language 表中插入语言信息

创建 java 过程

CREATE FUNCTION sqlj.install_jar(VARCHAR, VARCHAR, BOOLEAN) RETURNS void
AS ‘org.postgresql.pljava.management.Commands.installJar’
LANGUAGE java SECURITY DEFINER;

注册这个 java 类到 pg_proc 表上

使用 java 过程

当调用
select sqlj.install_jar(…);
,时
就会以调用linux系统函数 dlsym 在 pljava 文件夹下找 org.postgresql.pljava.management.Commands.installJar 这个类

然后调用 _PG_init 根据 initsequencer 函数中的状态机一步步添加参数、注册信号处理函数、创建虚拟机,并执行类:在这里插入图片描述
当有信号从虚拟机中传回时就执行相应的 handler

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java调用PostgreSQL函数实现最短路径分析可以通过以下步骤实现: 1. 首先,确保已经安装了PostgreSQL数据库,并且已经创建了包含有关路径信息的数据表,比如有两列分别是起始节点和目标节点。 2. 在Java项目,需要使用JDBC驱动程序来连接和操作PostgreSQL数据库。可以在项目的pom.xml文件添加以下依赖: ``` <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>版本号</version> </dependency> </dependencies> ``` 3. 在Java代码,首先需要导入所需的包: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; ``` 4. 建立与PostgreSQL数据库的连接: ``` Connection connection = null; try { String url = "jdbc:postgresql://localhost:5432/数据库名"; String user = "用户名"; String password = "密码"; connection = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } ``` 5. 编写SQL语句来调用PostgreSQL函数实现最短路径分析: ``` String sql = "SELECT * FROM shortest_path('SELECT id,source,target,cost FROM 表名', 起始节点, 目标节点, false, false)"; ``` 这个SQL语句的`表名`是存储路径信息的表的名字,`cost`是从起始节点到目标节点的代价。 6. 执行SQL语句并获取结果: ``` Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { // 处理查询结果 } ``` 7. 在`while`循环,可以通过`resultSet`来获取查询结果的最短路径信息,比如获取路径的节点顺序、代价等。 8. 最后,记得关闭连接和释放资源: ``` resultSet.close(); statement.close(); connection.close(); ``` 以上就是使用Java调用PostgreSQL函数实现最短路径分析的大致步骤。根据实际情况,可能还需要根据具体需求进行一些参数设置和结果处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值