Java 在MATLAB中使用SQLServer-JDBC驱动程序
我需要从Matlab内部连接到SQLServer数据库 注意事项:Java 在MATLAB中使用SQLServer-JDBC驱动程序,java,sql-server,matlab,jdbc,Java,Sql Server,Matlab,Jdbc,我需要从Matlab内部连接到SQLServer数据库 注意事项: 购买Matlab数据库工具箱的许可证不是一个选项——我只能使用核心Matlab和Java 当Matlab初始化时,我不能假设Java路径的任何内容 请不要告诉我使用Python。我已经知道了,但是我工作的公司不 这是我到目前为止所做的 我已经从下载了SQL Server JDBC驱动程序 我已经创建了一个沙盒目录,内容如下图所示 这是我的Matlab代码 % Connection params server = 'mySe
这是我到目前为止所做的 我已经从下载了SQL Server JDBC驱动程序 我已经创建了一个沙盒目录,内容如下图所示
这是我的Matlab代码
% Connection params
server = 'myServerName';
port = 1433;
dbname = 'myDatabase';
user = 'user1';
pass = 'password';
url = sprintf('jdbc:sqlserver://%s:%d;DatabaseName=%s',server,port,dbname);
% Importing Java libraries
import java.sql.*;
import java.sql.DriverManager;
import java.sql.DriverManager.*;
% Add the Microsoft SQL Server JAR to Java path
javaaddpath('<path_to_this_folder>\sqljdbc41.jar'); %for JRE7
import com.microsoft.sqlserver.jdbc.*
% Try to instantiate the JDBC Driver
% This way DOES work
% (https://stackoverflow.com/questions/24438359/connecting-matlab-and-mysql-with-the-jdbc-driver)
if true
d = com.microsoft.sqlserver.jdbc.SQLServerDriver;
urlValid = d.acceptsURL(url);
props = java.util.Properties;
props.put('user',user);
props.put('password',pass);
con = d.connect(url, props);
% This way DOES NOT work.
%I referred to the sample code included with the JDBC to write this.
else
% Matlab Doc says this is similar to calling...
% Class.forName(...)
javaObjectEDT('com.microsoft.sqlserver.jdbc.SQLServerDriver');
driver = DriverManager.getDriver(url);
con = DriverManager.getConnection(url, user, pass);
end
有没有办法解决这个问题,或者我应该直接通过驱动程序本身进行连接?我想不出一个重要的原因。会有什么后果吗?我应该改用数据源方法吗
谢谢 您可能希望尝试将驱动程序添加到静态Java路径,而不是动态Java路径。每当我使用数据库驱动程序时,如果它们在动态路径上,它们似乎会遇到问题;我不知道确切的原因,但它们似乎需要以一种特殊的方式加载,如果它们在动态路径上,则无法很好地工作。我不懂Matlab,因此有此评论。“正常”方法是使用
DriverManager.getConnection
,而不是DriverManager.getDriver
,后面紧跟Driver.getConnection
。该错误表明驱动程序尚未加载(注册)到驱动程序管理器,因此该javaObjectEDT
无法按广告的方式工作,或者Matlab在类加载中应用了限制,阻止了该功能的工作。请注意,DriverManager.getConnection
对DriverManager.getDriver
应用了一些额外的技巧,所以我会先试试。@markrottveel。我的理解是,DriverManager.getDriver(url)
只是搜索DriverManager,看看是否有加载的驱动程序可以处理给定的url。它实际上对加载的驱动程序没有任何作用。我看不出这会如何改变下面的一行,即,DriverManager.getConnection
@markrotterveel。也就是说,Matlab很可能限制了一些类加载。让我在那里挖点东西。
Java exception occurred:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)