要在 Java 函数中访问数据库,您确实需要连接。对于H2,有两种方式获得这样的连接:
解决方案1:如果Java函数的第一个参数是ajava.sql.Connection
,然后数据库提供连接。对于 SQL,这是一个“隐藏”参数,这意味着您不能也不需要显式设置它。这是有记录的:用户定义函数和存储过程 http://www.h2database.com/html/features.html#user_defined_functions,“需要连接的功能”。例子:
CREATE ALIAS QUERY AS $$
ResultSet query(Connection conn, String sql) throws SQLException {
return conn.createStatement().executeQuery(sql);
} $$;
CALL QUERY('SELECT * FROM DUAL');
解决方案2:为了与 Apache Derby 和 Oracle 兼容,您可以使用以下命令在 Java 函数中打开新连接DriverManager.getConnection("jdbc:default:connection")
。此功能在 H2 版本 1.3.151 及更高版本中可用,默认情况下处于禁用状态。要启用它,请附加;DEFAULT_CONNECTION=TRUE
到数据库 URL http://www.h2database.com/javadoc/org/h2/constant/DbSettings.html#DEFAULT_CONNECTION。这是一个有问题的功能,因为如果在 H2 驱动程序之前加载,Oracle JDBC 驱动程序将尝试解析此数据库 URL。因此,如果加载了 Oracle 驱动程序,基本上您将无法使用该功能(我认为这是 Oracle 驱动程序中的一个错误)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)