使用 JDBC 驱动程序连接 MATLAB 和 MySQL

2023-12-03

我买了 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');

有没有人遇到过这个问题或者有任何建议可以帮助我解决这个问题。

提前致谢。


我的第一个怀疑是你的java类路径。代替:

javaclasspath('mysql-connector-java-5.1.30-bin.jar')

Use

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)

The DriverManager构建并没有太大帮助。它的设计似乎是为了允许开发人员加载一堆驱动程序,然后连接到任何受支持的数据库,而无需知道或关心数据库实现是什么(例如 Mysql、Postgresql、Oracle 等),我从未将其视为有用的功能。我认为(希望?)这被较少使用,有利于DataSource构造。

无论如何,如果这是您第一次将 Mysql 连接到 Matlab,您可能最好直接使用提供的 Driver 类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JDBC 驱动程序连接 MATLAB 和 MySQL 的相关文章