java - 通过 JDBC 将 MATLAB 连接到 Apache Derby 数据库

标签 java matlab jdbc derby

我被要求将 Apache Derby 数据库连接到我们现有的 MATLAB 数据挖掘工具。我正在运行 MATLAB R2014a(无数据库工具箱)

经过一些研究和反复试验,我做了以下事情:

去了http://www.java2s.com/Code/Jar/d/Downloadderbyclientjar.htm下载derbyclient.jar并保存,并将其解压到共享文件夹。

编辑文本文件 C:\Users\tyler.davis\AppData\Roaming\MathWorks\MATLAB\R2014a\javaclasspath.txt 并添加 derbyclient.jar 的完整路径,保存它,重新启动 MATLAB。

在 MATLAB 命令行

javaclasspath

在静态路径列表的末尾显示“S:\SHARED...\derbyclientjar\derbyclient.jar\derbyclient.jar”。到目前为止一切顺利。

下一步,尝试

driverClassName = 'org.apache.derby.jdbc.ClientDriver';
java.lang.Class.forName(driverClassName);

报告错误:

Java exception occurred:
java.lang.ClassNotFoundException: org/apache/derby/jdbc/ClientDriver

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

尝试了替代方案:

classLoader = com.mathworks.jmi.ClassLoaderManager.getClassLoaderManager;
driverClass = classLoader.loadClass(driverClassName);

这似乎有效,创建了对象“driverClass,类型 1x1 java.lang.Class”和“classLoader,值 1x1 com.mathworks.jmi.ClassLoaderManager”

然后我尝试了

DriverManager.registerDriver(driverClass.newInstance);

报告错误

Undefined variable "DriverManager" or class "DriverManager.registerDriver".

如果我尝试使用创建示例数据库

cxnStr = 'jdbc:derby:sampleDB:create=true';
cxn = java.sql.DriverManager.getConnection(cxnStr);

我明白

Java exception occurred:
java.sql.SQLException: No suitable driver found for jdbc:derby:sampleDB:create=true

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

我真的不知道我在这里做什么;只是从网络上复制其他人的代码。关于下一步尝试什么有什么建议吗?

最佳答案

由于您刚刚开始使用 Derby,我可以建议您花一两个小时完成 Derby 教程:http://db.apache.org/derby/docs/10.11/getstart/cgstutorialintro.html

另外,我可以建议您养成从 Apache 网站而不是其他 Internet 站点下载 Derby 的习惯吗?其他站点上的 Derby 副本可能没问题,但从 Apache 网站获取 Derby 似乎最可靠、最安全: http://db.apache.org/derby/derby_downloads.html

您在描述中所做的大部分内容对我来说似乎都不错;我怀疑你误入歧途的地方是你解压 derbyclient.jar 本身时。

虽然“*.jar”文件实际上是有效的 ZIP 存档,但您不需要解压缩这些打包的 jar 文件。相反,您应该将该 jar 保留为“derbyclient.jar”,然后设置 CLASSPATH 以将“derbyclient.jar”作为 CLASSPATH 列表中的条目之一包含在内。

最后,请注意 JDBC 连接 URL

jdbc:derby:sampleDB:create=true

是 Derby 的嵌入式配置的正确 JDBC 连接 URL,而不是 Derby 的客户端-服务器配置。

因此,即使您将 derbyclient.jar 的良好副本正确地添加到您的 CLASSPATH 中,您也将无法使用

jdbc:derby:sampleDB:create=true

相反,您必须使用客户端-服务器样式的 JDBC 连接 URL,例如:

jdbc:derby://my.server.name:1527/sampleDB

(并了解如何操作 Derby Network Server),否则您需要切换到使用嵌入式驱动程序 (org.apache.derby.jdbc.EmbeddedDriver)。

有关此配置概念的更多信息,请参阅:http://db.apache.org/derby/docs/10.11/getstart/cgsquck70629.html

有关 JDBC 连接 URL 和两个 JDBC 驱动程序类的更多信息,请参阅:http://db.apache.org/derby/docs/10.11/getstart/cgsquck19524.html

一旦您有机会阅读 Derby 入门指南,我建议您根据您在该经历中学到的知识提出一些后续问题。

关于java - 通过 JDBC 将 MATLAB 连接到 Apache Derby 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699592/

相关文章:

MATLAB:输入以确认输入对话框?

java - JDBC - 从 JAVA 调用 PLSQL 会出现 Java.sql.SQLException : ORA-06550

Java/Swing : Trying to get BorderLayout to play nice with GridBagLayout

java - 我不断从程序中得到错误的数字

Matlab,如何计算AUC(曲线下面积)?

exception - PgSQL 异常 : column name not found

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'raj' in 'field list' at sun. 反射(reflect)

Java按需构建系统

java - 使用 Eclipse 在 64 位机器上编译 32 位 Java 构建

image - 无法在 MATLAB 中使用 regionprops 将结构转换为矩阵