【发布时间】:2011-09-29 10:13:01
【问题描述】:
这可能是一个简单的问题:
- 如何从 Matlab 连接到 Microsoft SQL Server 2008 R2?
- 如何在给定一些 SQL 查询的情况下将表读入矩阵?
更新
我更喜欢一种不需要使用 ODBC 进行手动设置的方法。
【问题讨论】:
标签: sql-server sql-server-2008 matlab
这可能是一个简单的问题:
更新
我更喜欢一种不需要使用 ODBC 进行手动设置的方法。
【问题讨论】:
标签: sql-server sql-server-2008 matlab
我在下面回顾了在 MATLAB 中访问数据库的不同方法。以下是讨论了其中一些问题的 Stack Overflow 问题列表:
MATLAB 有一个嵌入式 Java JVM,允许您直接从 MATLAB 调用 JDBC drivers。您首先需要使它们在 MATLAB 中的 Java classpth 上可用:
javaclasspath('sqljdbc4.jar');
%# load driver and create connection
driver = com.microsoft.sqlserver.jdbc.SQLServerDriver;
conn = driver.connect('jdbc:sqlserver://<HOST>:<PORT>;databaseName=<DB>');
%# query database
q = conn.prepareStatement('select * from <TABLE>');
rs = q.executeQuery();
while rs.next()
char(rs.getString(0))
end
rs.close();
conn.close();
如果您有权访问Database Toolbox,它可以简化上述操作,因为它充当 JDBC/ODBC 内容的包装器:
conn = database('<DB>', '<USER>','<PASS>', ...
'com.microsoft.sqlserver.jdbc.SQLServerDriver', ...
'jdbc:sqlserver://<HOST>:<PORT>;database=<DB>');
curs = exec(conn, 'select * from <TABLE>');
curs = fetch(curs);
curs.Data
close(curs)
close(conn)
您还可以通过 ODBC 访问数据库。首先创建一个到 MSSQL Server (Control Panel > ODBC Data Sources) 的 DSN,然后从数据库工具箱中使用它:
conn = database('myDB', '', ''); %# User/System DSN
%...
close(conn)
您可以直接使用 MATLAB 中的 ADO OLEDB 组件。一种方法是指定连接字符串(无 DNS):
conn = actxserver('ADODB.Connection');
conn.Open('Provider=sqloledb;Data Source=<HOST>;Initial Catalog=<DB>;User Id=<USER>;Password=<PASS>;');
conn.Execute('select * from <TABLE>').GetRows
conn.Close()
最后,最新版本的 MATLAB 增加了call .NET from MATLAB 的功能。因此您可以使用 ADO.NET 数据提供程序:
import System.Data.SqlClient.*
NET.addAssembly('System.Data');
conn = SqlConnection('Data Source=<HOST>;Initial Catalog=<DB>');
conn.Open();
q = SqlCommand('select * from <TABLE>', conn);
r = q.ExecuteReader();
while r.Read()
char(r.GetString(0))
end
r.Close()
conn.Close()
【讨论】: