使用 JDBC 驱动程序连接 MATLAB 和 MySQL
Posted
技术标签:
【中文标题】使用 JDBC 驱动程序连接 MATLAB 和 MySQL【英文标题】:Connecting MATLAB and MySQL with the JDBC Driver 【发布时间】:2014-06-26 19:11:29 【问题描述】:我买了 Yair Altmam 的《Undocumented MATLAB》一书;在本书的第 2.2 章中,他讨论了数据库连接以及使用 JDBC 连接数据库。我按照书中的步骤和文字进行操作。我下载了mysql-connector-java-5.1.30-bin.jar(来自http://dev.mysql.com/downloads/connector/j/)并输入了书中详述的以下代码:
clear all
%%Initializing JDBC driver
try
import java.sql.DriverManager;
javaclasspath('mysql-connector-java-5.1.30-bin.jar')
driverClassName = 'com.mysql.jdbc.Driver';
try
%This works when the class/JAR is on the static Java classpath
%Note: driver automatically registers with DriverManager
java.lang.Class.forName(driverClassName);
catch
try
%Try loading from the dynamic Java path
classLoader = com.mathworks.jmi.ClassLoaderManager.getClassLoaderManager;
driverClass = classLoader.loadClass(driverClassName);
catch %#ok<*CTCH>
try
%One more attempt, using the system class-loader
classLoader = java.lang.ClassLoader.getSystemClassLoader;
%An alternative, using the MATLAB Main Thread's context
%classLoader =
%java.lang.Thread.currentThread.getContextClassLoader;
driverClass = classLoader.loadClass(driverClassName);
catch
%One final attempt-load directly, like this:
driverClass = eval(driverClassName); %#ok<*NASGU>
%Or like this (if the driver name is known in advance):
driverClass = com.mysql.jdbc.Driver;
end
end
%Now manually register the driver with the DriverManager
%Note: silently fails if driver is not in the static classpath
DriverManager.registerDriver(driverClass.newInstance);
end
%continue with database processing
catch
error(['JDBC driver ' driverClassName ' not found!']);
%do some failover activity
end
%% Connecting to a database
import java.sql.*;
connStr = 'jdbc:mysql://localhost:3306/test';
con = DriverManager.getConnection(connStr,'root','1234');
每次尝试运行代码我都会收到以下错误消息:
??? Java exception occurred:
java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/test
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
Error in ==> undocumentedMATLAB at 45
con = DriverManager.getConnection(connStr,'root','1234');
有没有人遇到过这个问题或有任何建议可以帮助我解决这个问题。
提前致谢。
【问题讨论】:
【参考方案1】:我的第一个怀疑是你的 java 类路径。而不是:
javaclasspath('mysql-connector-java-5.1.30-bin.jar')
使用
javaaddpath('C:\full\path\to\mysql-connector-java-5.1.30-bin.jar')
如果这不是问题,让我们跳过DriverManager
(并没有太大帮助),看看下面的代码是否有效,(或失败的地方)。
d = com.mysql.jdbc.Driver;
urlValid = d.acceptsURL('jdbc:mysql://localhost:3306/test'); %Should return true
props = java.util.Properties;
props.put('user','root'); props.put('password','1234');
con = d.connect('jdbc:mysql://localhost:3306/test',props)
DriverManager
构造并没有太大帮助。它似乎旨在允许开发人员加载一堆驱动程序,然后连接到任何受支持的数据库,而无需知道或关心数据库实现是什么(例如 Mysql、Postgresql、Oracle 等)。我从未将其视为有用的功能。我认为(希望?)这是为了支持 DataSource
构造而较少使用。
无论如何,如果这是您第一次将 Mysql 连接到 Matlab,您可能最好直接使用提供的 Driver 类。
【讨论】:
感谢@Pursuit 的回答。我试过了,我仍然遇到我的问题中详述的问题 试试这个:d = com.mysql.jdbc.Driver
然后d.acceptsURL('jdbc:mysql://localhost:3306/test')
。这应该返回 true,没有错误。
上面的评论,以及添加到完整答案的后续步骤。
非常感谢@Pursuit。我运行了您上面的代码并且它有效。非常感谢您抽出一些时间来帮助我。 :)以上是关于使用 JDBC 驱动程序连接 MATLAB 和 MySQL的主要内容,如果未能解决你的问题,请参考以下文章