Este documento describe cómo acceder a una base de datos MySQL desde una aplicación Delphi utilizando ODBC. Explica los pasos para definir una fuente de datos ODBC, crear componentes que se conecten a la base de datos, mostrar datos en un TDBGrid y ejecutar comandos SQL como INSERT y DELETE.
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Acceso MySQL Delphi
1. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
BASE DE DATOS IBASE DE DATOS I
Acceso a MySQL Desde DelphiAcceso a MySQL Desde Delphi
2. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Definir una Fuente deDefinir una Fuente de
Datos ODBCDatos ODBC
3. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 2: Descargar MyODBC desde
http://dev.mysql.com/downloads/connector/odbc/5.1.html#win32
APILICACIÓN Ejemplo: Delphi
DBMS Ejemplo: MySQL
ODBC es una interface (API:
Aplication Program Interface)
estandar para acceder a Bases de
Datos desde cualquier aplicación
(Ej: Delphi).
ODBC Driver
(Open DataBase Connectivity)
Paso 3:
Instalar el Software MyODBC,
solo se necesita ejecutar :
sql-connector-odbc-5.1.4-
win32.msi
y seguir los pasos del programa
de instalación
Modelo de Dos Capas
DB
Paso 1
Hacer un Script
para crear la DB
4. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 3:
Para poder acceder a una base de datos a través de ODBC
debemos definir una fuente de datos (Agregar y Configurar), y
utilizaremos el administrador de ODBC de Windows (Este paso
se realiza solo una vez por computador):
A. Windows XP
1. IR al panel de control
2. Hacer click en Performance and maintenance, Administrative
tools y luego en Data Sources (ODBC).
A. Windows Vista
1. IR al panel de control
2. Hacer click en Herramientas Administrativas y luego en
Fuente de Datos (ODBC).
Definir una Fuente de Datos ODBC
5. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Debes seleccionar la versión de MySQL para Windows
Hacer clic en AddHacer clic en Add
Definir una Fuente de Datos ODBC
6. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Seleccionar MySQL ODBCSeleccionar MySQL ODBC
DriverDriver
Hacer Clic en FinishHacer Clic en Finish
Definir una Fuente de Datos ODBC
7. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Definir una Fuente de Datos ODBC
Se deben introducir los datos que se piden y hacer clic en OK.
Podemos hacer clic en elPodemos hacer clic en el
botón Test para verificarbotón Test para verificar
la conexión con la BDla conexión con la BD
Se debe introducir la clave delSe debe introducir la clave del
administrador (root) para que seadministrador (root) para que se
muestren las bases de datos quemuestren las bases de datos que
existen en MySQLexisten en MySQL
Hacer clic en OKHacer clic en OK
8. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Definir una Fuente de Datos ODBC
La fuente de datos <BD_Proyecto_Delphi> ya esta creada.
9. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Aplicaciones con Acceso a BDAplicaciones con Acceso a BD
Diseño de FormulariosDiseño de Formularios
10. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Estructura de la Aplicación en Delphi
La fuente de datos <BD_Proyecto_Delphi> ya esta creada.
FORMULARIO
Componentes de Conexión
(DataSet - ADO)
Componentes para la
Fuente de Datos
(Data Access)
Componentes de Datos
(Data Controls)
BD en MySQL
11. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 1: Definir una Conexión con la BD
Colocamos un componenteColocamos un componente
ADOTableADOTable
Vinculamos el componenteVinculamos el componente
con una BD editando sucon una BD editando su
propiedadpropiedad
ConnectionString.ConnectionString.
Si no esta definida laSi no esta definida la
conexión, debemosconexión, debemos
construirla (Build…)construirla (Build…)
1.1. Seleccionamos el Acceso a laSeleccionamos el Acceso a la
Fuente de Datos definidaFuente de Datos definida
anteriormenteanteriormente
2.2. Tipeamos los datos del usuarioTipeamos los datos del usuario
rootroot
3.3. Seleccionamos la base de datos aSeleccionamos la base de datos a
utilizarutilizar
Podemos verificar si se la conexiónPodemos verificar si se la conexión
se realiza satisfactoriamentese realiza satisfactoriamente
Por ultimo, si todo estaPor ultimo, si todo esta
bien, ponemos labien, ponemos la
Propiedad en true y loPropiedad en true y lo
debe tomar sin error.debe tomar sin error.
Le damos un nombre a laLe damos un nombre a la
Propiedad Name,Propiedad Name,
Ejemplo: TablaEjemplo: Tabla
Le damos el nombre a laLe damos el nombre a la
Propiedad TableName,Propiedad TableName,
Ejemplo: LibroEjemplo: Libro
12. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 2: Definir Componentes de Fuentes de
Datos
En la propiedad DataSetEn la propiedad DataSet
Seleccionamos la conexión aSeleccionamos la conexión a
la tabla del paso anterior,la tabla del paso anterior,
Ejemplo: TablaEjemplo: Tabla
Le damos un nombre a laLe damos un nombre a la
fuente de datos en lafuente de datos en la
propiedad Namepropiedad Name
Ejemplo: Fuente_TablaEjemplo: Fuente_Tabla
La Página Data Access
contiene componentes
para la capa intermedia
(Data Source), que
permiten vincular los
controles de datos a los
controles de conexión
13. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 3: Definir Componentes de Datos - TBDGrid
En la propiedadEn la propiedad DataSourceDataSource
Seleccionamos la fuente deSeleccionamos la fuente de
datos del paso anterior,datos del paso anterior,
Ejemplo: Fuente_TablaEjemplo: Fuente_Tabla
La página Data Controls contiene controles
relacionados a datos, útiles para construir la
internase del usuario (Formularios).
En laEn la propiedad Namepropiedad Name lele
damos un nombredamos un nombre
apropiado al TDBEditapropiado al TDBEdit
Ejemplo: Grid_LibroEjemplo: Grid_Libro
14. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 3: Definir Componentes de Datos - TBDGrid
Luego de seleccionar laLuego de seleccionar la
fuente (Data Source) debenfuente (Data Source) deben
mostrarse los datosmostrarse los datos de lade la
tabla en el Gridtabla en el Grid
15. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 3: Definir Columnas de Datos - TBDGrid
Permite adicionarPermite adicionar
todos los campos altodos los campos al
Grid y así poderGrid y así poder
configrarlosconfigrarlos
Permite crearPermite crear
nuevas columnasnuevas columnas
Luego, debemos hacer clic (…)Luego, debemos hacer clic (…)
en laen la propiedad Columnspropiedad Columns parapara
configurar los campos que seconfigurar los campos que se
mostrarán en el Gridmostrarán en el Grid
16. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 3: Definir Columnas de Datos - TBDGrid
Hacemos clic enHacemos clic en
cada campo paracada campo para
configurarloconfigurarlo
Podemos cambiar elPodemos cambiar el
anchoancho de lasde las
columnas con elcolumnas con el
mouse o con lamouse o con la
propiedad Widthpropiedad Width
Podemos configurarPodemos configurar
susu alineaciónalineación
Podemos cambiar elPodemos cambiar el
nombre de lanombre de la
columnacolumna, su, su
alineación, entrealineación, entre
otros.otros.
17. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Algunas Características de TBDGrid
18. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Características de las Columnas de un TBDGrid
19. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 4: Definir Componente de Comando SQL
Este componente nos permite colocar
en la propiedad CommandText el
comando SQL que vamos a ejecutar
Vinculamos elVinculamos el
componente con unacomponente con una
BD editando suBD editando su
propiedadpropiedad
ConnectionString.ConnectionString.
Le damos un nombre alLe damos un nombre al
componente.componente.
Se usara cuando seSe usara cuando se
manden a ejecutar losmanden a ejecutar los
comandos SQLcomandos SQL
20. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Paso 5: Operaciones SQL
Añadimos los botonesAñadimos los botones
para incluir, modificar ypara incluir, modificar y
eliminareliminar
21. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
procedure TForm1.Acc_IncluirClick(Sender: TObject);
Begin
{ Construir un comando SQL, Concatenación }
ADOCommand.CommandText := ‘INSERT INTO Libro (cod_libro,
titulo) VALUES (“'+Cod_Libro.Text+‘”, "'+Titulo.Text+'")';
{ Policía - Para mostrar el comando SQL }
ShowMessage(Command.CommandText);
{ Para ejecutar el comando SQL }
ADOCommand.Execute;
{ Para que se muestre en el Grid el registro incluido }
Tabla.Requery();
end;
Paso 5: Incluir Registros (INSERT SQL)
22. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
procedure TForm1.Acc_EliminarClick(Sender: TObject);
var
cod_libro_Aux : String;
I : Integer;
La_Tabla : TDataSet;
begin
La_Tabla := Grid_Libro.DataSource.DataSet;
if (Grid_Libro.SelectedRows.Count > 0)
then begin
if (MessageDlg('Esta seguro de eliminar?', mtWarning, [mbYes, mbNo], 0) =
mrYes)
then begin
for i:=0 to Grid_Libro.SelectedRows.Count-1 do
begin
La_Tabla.BookMark := Grid_Libro.SelectedRows.Items[I];
Cod_Libro_Aux := La_Tabla['Cod_Libro'];
ADOCommand.CommandText := 'DELETE FROM Libro WHERE
Cod_Libro="'+
Cod_Libro_Aux+'“ ';
ShowMessage(ADOCommand.CommandText);
ADOCommand.Execute;
Tabla.Requery();
end;
end;
end;
end;
Paso 5: Eliminar Registros (DELETE SQL)
23. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
procedure TForm1.Grid_LibroDblClick(Sender: TObject);
var
I : Integer;
La_Tabla : TDataSet;
begin
La_Tabla := Grid_Libro.DataSource.DataSet;
if (Grid_Libro.SelectedRows.Count = 1)
then begin
for i:=0 to Grid_Libro.SelectedRows.Count-1 do
begin
La_Tabla.BookMark := Grid_Libro.SelectedRows.Items[I];
Cod_Libro.Text := La_Tabla['Cod_Libro'];
Titulo.Text := La_Tabla['Titulo'];
end;
end
end;
Paso 5: Modificar Registros (UPDATE SQL)
24. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
procedure TForm1.Acc_ModificarClick(Sender: TObject);
begin
if length(Cod_Libro.Text)>0
then begin
ADOCommand.CommandText := 'UPDATE Libro '+
'SET Titulo = "'+Titulo.Text+'" '+
'WHERE Cod_Libro = "'+Cod_Libro.Text+'“
';
ShowMessage(ADOCommand.CommandText);
ADOCommand.Execute;
Tabla.Requery();
end
else ShowMessage('Debe seleccionar un libro (doble clic)');
end;
Paso 5: Modificar Registros (UPDATE SQL)
Para eliminar un registro debemos seleccionarlo en el Grid con un
DobleClic, para que se muestre en los componentes Edit. Una vez
modificado se hace clic en el botón Modificar. Otra forma es
editar los campos TEdit y luego hacer clic en el botón eliminar.
25. DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –DBMS – ACCESO A BASE DE DATOS MYSQL DESDE DELPHI –
UNIDAD IVUNIDAD IV
Docente: Ing. Fidel Darío Montes de Oca C.Docente: Ing. Fidel Darío Montes de Oca C.
Notas:
El Grid no debe ser editable (dgEditing)
Activamos la propiedad dgMultiSelected