Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verbinde ich mich von Matlab mit Microsoft SQL Server 2008 (MSSQL)?

Im Folgenden präsentiere ich einen Überblick über die verschiedenen Ansätze für den Zugriff auf Datenbanken in MATLAB. Hier ist eine Liste von Stack Overflow-Fragen, in denen einige von ihnen diskutiert wurden:

Java

MATLAB verfügt über eine eingebettete Java-JVM, mit der Sie direkt aufrufen können JDBC-Treiber von MATLAB. Sie müssen sie zuerst auf dem Java classpth in MATLAB:

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();

Datenbank-Toolbox

Wenn Sie Zugriff auf die Database Toolbox haben , kann es das Obige vereinfachen, da es als Wrapper um JDBC/ODBC-Sachen fungiert:

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)

Sie können auch über ODBC auf die Datenbank zugreifen. Erstellen Sie zunächst einen DSN zu MSSQL Server (Control Panel > ODBC Data Sources ), dann verwenden Sie es aus der Database Toolbox:

conn = database('myDB', '', '');    %# User/System DSN
%...
close(conn)

COM

Sie können die ADO OLEDB-Komponente direkt von MATLAB verwenden. Eine Möglichkeit besteht darin, eine Verbindungszeichenfolge (ohne DNS) anzugeben:

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()

.NET

Schließlich haben neuere Versionen von MATLAB die Möglichkeit hinzugefügt, aufzurufen .NET von MATLAB . Sie können also die ADO.NET-Datenanbieter verwenden:

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()