Scripts - Comandos de base de datos
Utilizando los comandos de base de datos de MedCalc puede conectarse a diferentes bases de datos SQL.
- SQL Server (Microsoft)
SQL Server es un sistema de gestión de bases de datos relacionales (RDBMS) propietario desarrollado por Microsoft.
- MySQL (Oracle)
MySQL es un sistema de gestión de bases de datos relacionales de código abierto. Se utiliza principalmente en servidores web.
- SQLite (Consorcio SQLite)
SQLite no utiliza una arquitectura cliente-servidor, sino que almacena las tablas en un archivo local en la PC.
Conectarse a las bases de datos
Existen diferentes funciones para conectarse a las tres bases de datos. Estas funciones devuelven un identificador (un número que identifica la conexión) que se utiliza en las funciones y consultas posteriores de la base de datos.
- SQL Server
manejar= OpenSql(cadena de conexión);.
Ejemplo:
handle= OpenSql('Driver={SQL Server};Server=.\SQLEXPRESS;Database=laboratory;Trusted_Connection=True;');Para conocer la cadena de conexión de su base de datos, probablemente tendrá que consultar al departamento de TI de su institución.
- MySQL
manejar= OpenMySql(servidor,usuario,contraseña,base de datos);.
Ejemplo:
handle=OpenMySql('servername:3306', 'UserID', 'MyPassword', 'laboratory');Para conocer las diferentes configuraciones de su base de datos, probablemente también tendrá que consultar al departamento de TI de su institución.
- SQLite
manejar= CreateSQLite(nombre de archivo); crea una base de datos local con el nombre de archivo indicado.
manejar= OpenSQLite(nombre de archivo); abre una base de datos local existente con el nombre de archivo indicado.
Ejecutar una consulta de base de datos
La función tabla= SQLQuery(handle,query); ejecuta la consulta en la base de datos identificada con su manejador, y almacena su posible salida en una tabla.
La consulta puede contener marcadores de posición (signos de interrogación) que serán reemplazados por argumentos posteriores de la función SQLQuery.
En el siguiente ejemplo, MedCalc reemplazará los 3 signos de interrogación con los valores 2, 'Jones' y 'Margeret', cuando se ejecute la consulta.
SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (?,?,?);',2, 'Jones', 'Margaret');
Esto permite utilizar variables fácilmente en el función SQLQuery.
Además, MedCalc 'escapará' los apóstrofes en los argumentos, por lo que la consulta se puede ejecutar correctamente, como se ilustra en el siguiente ejemplo.
id=2; name= "O'Neill"; firstname= "Margaret"; SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (?,?,?);',id,name,firstname);
La misma función SQLQuery se utiliza para las tres bases de datos diferentes.
Importar una tabla de base de datos a la hoja de cálculo de MedCalc
La función tabla= SQLImport(handle,query); ejecuta la consulta en la base de datos identificada con su identificador e importa su posible salida a la hoja de cálculo de MedCalc. Su uso es similar al de SQLQuery.
Ejemplos
SQLImport(handle, 'SELECT * FROM Patients;'); SQLImport(handle, 'SELECT * FROM Patients WHERE Age>?;',20);
El primer ejemplo importará la tabla completa de Pacientes. El segundo ejemplo solo importará los casos mayores de 20 años.
Cerrar la conexión a la base de datos
Se utiliza un único comando común para cerrar la conexión a una base de datos: SQLClose(manejar);.
Mensajes de error
La función str= SQLError(); devuelve detalles sobre el último comando de base de datos.
Ejemplos
SQL Server
handle=OpenSql('Driver={SQL Server};Server=.\SQLEXPRESS;Database=laboratory;Trusted_Connection=True;');
t=SQLQuery(handle, 'SELECT COLUMN_NAME FROM information_schema.columns WHERE table_name = 'Persons'');
?t;
t=SQLQuery(handle, 'SELECT * FROM Patients;');
?t;
SQLClose(handle);
SQLite
handle=CreateSQLite('E:\laboratory.db');
t=SQLQuery(handle, 'CREATE TABLE Patients (PersonID int,LastName varchar(255),FirstName varchar(255));');
?SQLError();
SQLQuery(handle, 'INSERT INTO Patients VALUES (1,'Smith','John');');
SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (2,'Jones','Margaret');');
t=SQLQuery(handle, 'SELECT * FROM Patients;');
?t;
SQLClose(handle);
resultados en:
| PersonID | LastName | FirstName |
| 1 | Smith | John |
| 2 | Jones | Margaret |