如何设置 Apache 服务器 derby 的类路径属性。我尝试在创建过程并将其作为外部名称链接到 Java 函数时调试此错误:
The class 'C:\Users\Koi\IdeaProjects\Java Finishing Touches\JDBC\src\main\java\MyFirstDatabaseConnection.testProc' does not exist or is inaccessible. This can happen if the class is not public or the derby.database.classpath property is missing or incorrectly defined.
对于 apache derby 过程,这是我定义的外部名称:
CREATE PROCEDURE
read_e_names
() PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME 'C:\Users\Koi\IdeaProjects\Java Finishing Touches\JDBC\src\main\java\MyFirstDatabaseConnection.testProc';
简而言之:
CLASSPATH
添加到您的过程的 Jar 文件的路径。EXTERNAL NAME
为Java包名+类名+方法名:例如:com.example.ReadENamesProcedure.readENames
项目目录
创建
ST_Derby_Procedure
C:\
创建数据库数据目录
derby-我的演示程序
pom.xml
我的程序.java
读取ENames程序.java
建造
输出:我们的 procedure.jar
Apace Derby 网络服务器
对于 Java 17+
db-derby-10.16.1.1-bin
放入C:\TOOLS
(完整路径C:\TOOLS\db-derby-10.16.1.1-bin
:)添加用户环境变量
DERBY_HOME
,设置C:\TOOLS\db-derby-10.16.1.1-bin
PATH
、添加C:\TOOLS\db-derby-10.16.1.1-bin\bin
运行 Derby 网络服务器
将程序 jar 的路径设置为
CLASSPATH
将工作目录更改为数据库数据目录(
C:\ST_Derby_Procedure\apache-derby-demodb
)打开CMD.exe
创建数据库
如果您尚未创建数据库,则需要创建一个:
在 ij 中:
如果您已经创建了数据库:
C:\ST_Derby_Procedure\init.sql
创建表并导入数据
在 中
ij
运行命令:ij
,从文件运行 SQL 命令:init.sql创建过程
在 中
ij
运行命令:注意:在 Windows 中,指令必须合并为一行。
Linux:这个和上面的一样。
笔记:
这里
EXTERNAL NAME
是 Java 格式,即:package name
……class name
method name
com.example
……ReadENamesProcedure
readENames
测试程序
在 ij 中,运行命令:
输出:
创建函数
在 ij 中,运行命令:
注意:在 Windows 中,指令必须合并为一行。
Linux:
测试功能
在 ij 中,运行命令:
输出:
演示 Java 调用过程
使用Java调用上面的PROCEDURE和FUNCTION。
pom.xml
调用ReadENames.java
CallAddNumbers函数.java
构建并下载依赖项
运行—调用 PROCEDURE
获取输出:
运行——调用函数
获取输出