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:
- Wie kann ich von Matlab aus auf eine Postgresql-Datenbank zugreifen, ohne die Matlabs-Datenbank-Toolbox?
- Verbindung von MATLAB 7.0 und MYSQL
- mit MATLAB SQL Server kommunizieren
- Namen von Access-Datenbanktabellen mit Matlab abrufen
- Aufrufen von ADO.NET von MATLAB
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()