Ik presenteer hieronder een overzicht van de verschillende benaderingen voor toegang tot databases in MATLAB. Hier is een lijst met Stack Overflow-vragen waarvan er enkele werden besproken:
- Hoe krijg ik toegang tot een postgresql-database van matlab zonder de toolbox van de matlabs-database?
- verbinding van MATLAB 7.0 en MYSQL
- communiceren MATLAB SQL Server
- Namen van Access-databasetabellen ophalen met Matlab
- ADO.NET aanroepen vanuit MATLAB
Java
MATLAB heeft een ingebouwde Java JVM, waarmee u direct de kunt aanroepen JDBC-stuurprogramma's van MATLAB. U moet ze eerst beschikbaar maken op de 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();
Database-toolbox
Als u toegang heeft tot de Database Toolbox , het kan het bovenstaande vereenvoudigen omdat het fungeert als een wrapper rond JDBC/ODBC-dingen:
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)
U kunt ook toegang krijgen tot de database via ODBC. Maak eerst een DSN naar MSSQL-server (Control Panel > ODBC Data Sources
), gebruik het dan vanuit de Database Toolbox:
conn = database('myDB', '', ''); %# User/System DSN
%...
close(conn)
COM
U kunt de ADO OLEDB-component van MATLAB direct gebruiken. Eén manier is om een verbindingsreeks op te geven (zonder 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()
.NET
Ten slotte hebben recente versies van MATLAB de mogelijkheid toegevoegd om op te roepen .NET van MATLAB . U kunt dus de ADO.NET-gegevensproviders gebruiken:
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()