Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 22
vichovi Va por buen camino
Chequear existencia de una BD

Hola a tod@s:

En primer lugar utilizo los componentes Zeos para conectar con la BD en MySQL.

Para comprobar si existe un ejercicio (BD) utilizo la siguiente función:

function EjercicioValido(Ejercicio:string):boolean;
var
msBDTmP:TZZMySqlDataBase;
mstrTran:TZZMySqlTransact;
begin
{Ejercicio es recuperado del registro de windows
y es un numero (año), por ejemplo "2003"}
if ejercicio='' then
begin
result:=false;
exit;
end;
msBDTmP:=TZZMySqlDataBase.Create(dmdatos);
msBDTmP.Host:=dmdatos.msBD.Host;
msBDTmP.Login:='root';
mstrTran:=TZZMySqlTransact.Create(dmdatos);
mstrTran.Database:=msbdtmp;
msBDTmP.Database:=ejercicio;
msBDTmP.Connected:=false;
try
msBDTmP.Connected:=true;
except
end;
result:=msBDTmP.Connected;
msBDTmP.Free;
mstrTran.Free;
end;


Si la función devuelve TRUE conecto dmdatos.msBD con el ejercicio, en caso contrario (FALSE, el ejercicio no existe) muestro una ventana para la introducción de un ejercicio válido y vuelvo a llamar a la función para ver si es válido (existe).

Hasta ahora (ayer) la función iba perfectamente, pero hoy no hay manera; la función siempre me devuelve FALSE.

Creo que el problema esta en MySQL, porque intento acceder a las bases de datos mediante un Front-End y tampoco hay manera. El semáforo está en verde, listo para trabajar (en principio).

La versión de los componentes Zeos es la -Beta 5.3.4- y la de MySQL es la -3.23.53-.

Si alguien pudiera echarme una mano lo agradeceria, primero fueron los filtro y ahora esto (sere el gafe).

Gracias de antemano y un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #2  
Antiguo 22-09-2003
Viet Viet is offline
Miembro
 
Registrado: jul 2003
Ubicación: Argentina - Mar del Plata
Posts: 252
Poder: 21
Viet Va por buen camino
Todo lo que haces es correcto... pero sin embargo esta funcion no devuelve si la DB existe sino que te devuelve si puede conectar o no tu aplicacion a la DB.... por lo que tendrias que sacar el Try Except para poder ver la excepcion y saber cual es el problema de la DB.....

Esa va a ser la forma mas rapida (y vas a poder ver si es un problema de usuario, permiso, error en el motor o bien si borraste la DB)

Suerte
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;)
Responder Con Cita
  #3  
Antiguo 22-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Otra opcion para manteniendo el try except es la utilización de raise

Código:
    try
        msBDTmP.Connected:=true;
    except
        raise;
    end;
Así también visualizarás el error que se produce.
Otra alternativa para visualizar el error y mostrar un mensaje al usuario algo más bonito, es capturarlo

Código:
var
  str : string;
begin
......
    try
        msBDTmP.Connected:=true;
    except
        on E: Exception do
        begin
           str := 'Error conectado. Mensaje de error: ' + E.Message;
           Application.MessageBox(PChar(str), 'Atención', MB_OK);
        end,
    end;
end,
Espero te sirva
Responder Con Cita
  #4  
Antiguo 22-09-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
vichovi

Para empezar te recomiendo actualizar a la versión 6.x de las componentes. Han cambiado el modelo y es lo que van a usar de ahora en adelante. Por otra parte me han paecido mucho más cómodas de usar.

Por otro lado, para saber si existe o no una base de datos no es necesario usar try-except para esperar el error. Puedes mandar la consulta

show databases like 'tu base de datos'

al servidor. Si el dataset resultante no tiene registros es que no existe.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:51:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi