A continuación presento una revisión de los diferentes enfoques para acceder a bases de datos en MATLAB. Aquí hay una lista de preguntas de Stack Overflow donde se discutieron algunas de ellas:
- ¿Cómo puedo acceder a una base de datos postgresql desde matlab sin la caja de herramientas de la base de datos matlabs?
- conexión de MATLAB 7.0 y MYSQL
- comunicar MATLAB SQL Server
- Obtener los nombres de las tablas de la base de datos de Access con Matlab
- Invocación de ADO.NET desde MATLAB
Java
MATLAB tiene una JVM de Java integrada, lo que le permite llamar directamente a Controladores JDBC de MATLAB. Primero debe hacer que estén disponibles en Java classpth en 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();
Caja de herramientas de la base de datos
Si tiene acceso a la Caja de herramientas de la base de datos , puede simplificar lo anterior ya que actúa como un envoltorio alrededor de cosas 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)
También puede acceder a la base de datos a través de ODBC. Primero cree un DSN para el servidor MSSQL (Control Panel > ODBC Data Sources
), luego utilícelo desde la Caja de herramientas de la base de datos:
conn = database('myDB', '', ''); %# User/System DSN
%...
close(conn)
COM
Puede usar directamente el componente ADO OLEDB de MATLAB. Una forma es especificar una cadena de conexión (sin 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
Finalmente, las versiones recientes de MATLAB agregaron la capacidad de llamar .NET de MATLAB . Entonces puede usar los proveedores de datos de 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()