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 Temas de Hoy

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: 21
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



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 18:04:49.


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