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):rolleyes:. Gracias de antemano y un saludo. |
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 |
Otra opcion para manteniendo el try except es la utilización de raise
Código:
try Otra alternativa para visualizar el error y mostrar un mensaje al usuario algo más bonito, es capturarlo Código:
var |
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 |
La franja horaria es GMT +2. Ahora son las 05:33:25. |
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