Je présente ci-dessous une revue des différentes approches pour accéder aux bases de données dans MATLAB. Voici une liste de questions Stack Overflow où certaines d'entre elles ont été abordées :
- Comment puis-je accéder à une base de données postgresql depuis matlab sans boîte à outils de base de données matlabs ?
- connexion de MATLAB 7.0 et MYSQL
- communiquer MATLAB SQL Server
- Obtenir des noms de tables de base de données Access avec Matlab
- Invoquer ADO.NET depuis MATLAB
Java
MATLAB a une JVM Java intégrée, vous permettant d'appeler directement le Pilotes JDBC de MATLAB. Vous devez d'abord les rendre disponibles sur Java classpth dans 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();
Boîte à outils de base de données
Si vous avez accès à la Database Toolbox , il peut simplifier ce qui précède car il agit comme un wrapper autour des éléments 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)
Vous pouvez également accéder à la base de données via ODBC. Créez d'abord un DSN vers MSSQL Server (Control Panel > ODBC Data Sources
), puis utilisez-le depuis la boîte à outils de la base de données :
conn = database('myDB', '', ''); %# User/System DSN
%...
close(conn)
COM
Vous pouvez utiliser directement le composant ADO OLEDB de MATLAB. Une façon consiste à spécifier une chaîne de connexion (sans 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
Enfin, les versions récentes de MATLAB ont ajouté la possibilité d'appeler .NET de MATLAB . Vous pouvez donc utiliser les fournisseurs de données 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()