Presento di seguito una rassegna dei diversi approcci per l'accesso ai database in MATLAB. Di seguito è riportato un elenco di domande sull'overflow dello stack in cui alcune di esse sono state discusse:
- Come posso accedere a un database postgresql da matlab senza matlabs database toolbox?
- connessione di MATLAB 7.0 e MYSQL
- comunica MATLAB SQL Server
- Come ottenere i nomi delle tabelle del database di Access con Matlab
- Richiamo di ADO.NET da MATLAB
Java
MATLAB dispone di una JVM Java incorporata, che consente di chiamare direttamente Driver JDBC da MATLAB. Devi prima renderli disponibili su 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();
Casella degli strumenti del database
Se hai accesso a Database Toolbox , può semplificare quanto sopra in quanto funge da wrapper per 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)
Puoi anche accedere al database tramite ODBC. Innanzitutto crea un DSN per MSSQL Server (Control Panel > ODBC Data Sources
), quindi utilizzalo da Database Toolbox:
conn = database('myDB', '', ''); %# User/System DSN
%...
close(conn)
COM
Puoi utilizzare direttamente il componente ADO OLEDB di MATLAB. Un modo è specificare una stringa di connessione (senza 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
Infine, le versioni recenti di MATLAB hanno aggiunto la possibilità di chiamare .NET da MATLAB . Quindi puoi utilizzare i fornitori di dati 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()