Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用JDBC驱动程序连接MATLAB和MySQL_Java_Mysql_Matlab_Jdbc - Fatal编程技术网

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

Java 用JDBC驱动程序连接MATLAB和MySQL,java,mysql,matlab,jdbc,Java,Mysql,Matlab,Jdbc,我买了一本由Yair Altmam写的没有文档的MATLAB;在本书的第2.2章中,他讨论了数据库连接和使用JDBC连接数据库。我遵循了书中的步骤和内容。我下载了mysql-connector-java-5.1.30-bin.jar(从),并键入了书中详述的以下代码: clear all %%Initializing JDBC driver try import java.sql.DriverManager; javaclasspath('mysql-connector-java-5.1.3

我买了一本由Yair Altmam写的没有文档的MATLAB;在本书的第2.2章中,他讨论了数据库连接和使用JDBC连接数据库。我遵循了书中的步骤和内容。我下载了mysql-connector-java-5.1.30-bin.jar(从),并键入了书中详述的以下代码:

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类路径。而不是:

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

如果这不是问题所在,那么让我们跳过
DriverManager
(实际上没有多大帮助),看看下面的代码是否有效(或者失败的地方)

DriverManager
构造实际上帮助不大。它的设计似乎允许开发人员加载一组驱动程序,然后连接到任何受支持的数据库,而不知道或不关心DB实现是什么(例如Mysql、Postgresql、Oracle等)。我从未将此视为有用的功能。我认为(希望?)这在
数据源
构造中得到了较少的使用


无论如何,如果这是您第一次将Mysql连接到Matlab,那么您最好使用提供的驱动程序类进行指导。

感谢@Pursuit提供您的答案。我试过了,但我仍然遇到了与问题中详述的相同的问题。试着这样做:
d=com.mysql.jdbc.Driver
then
d.acceptsURL('jdbc:mysql://localhost:3306/test)
。这应该返回true,没有错误。上面的评论,以及完整答案中添加的后续步骤。非常感谢@Pursuit。我运行了上面的代码,它运行正常。非常感谢您抽出时间帮助我。:)
javaclasspath('mysql-connector-java-5.1.30-bin.jar')
javaaddpath('C:\full\path\to\mysql-connector-java-5.1.30-bin.jar')
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)