Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   verificar la existencia de una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=40522)

gushmaish 20-02-2007 00:13:46

verificar la existencia de una base de datos
 
Hola colegas,
El problema es el siguiente.
Estoy utilizando delphi 6 con los componentes zeos version 6.6.0 beta conectandome a mysql 5.0


Estoy intentando hacer una clase que conecte a la base de datos sin la necesidad de estar agregando los componentes. Hasta ahora lo he logrado sin problemas ya q me base en los ejemplos q trae los componentes zeos.

Bueno , vamos a los bifes
Lo que yo necesito saber es si estan bien los datos (database,host,user,pass, etcetera) antes de dar el connection.open; ya q si estos estan mal me larga un sql error raise exception y demas yerbas... lo cual es molesto para el usuario ya q es un error de windows y no del programa.

Lo q yo estoy intentando hacer es comprobar antes q este todo bien, o en su defecto no llegar a un error de windows por asi decirlo. Es decir filtrar el error y yo poder informar cual es el problema a partir del error encontrado..

bueno aca les dejo el poco codigo q hasta ahora hice..
Código Delphi [-]
unit UConection;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ZClasses, ZDbcIntfs, ZCompatibility, ZDbcMysqlUtils, 
    //Dejar solo la base de datos q se utiliza
ZDbcMySql
    //ZDbcInterbase6,
    //ZDbcPostgreSql,
    //ZDbcDBLib
    ;

type
    TConnection = class
private
    //datos para la coneccion
    Protocol:string;
    HostName:string;
    Port:integer;
    DataBase:string;
    UserName:string;
    Password:string;
    //componentes q se crean dinamicamente para la conexion
    Connection: IZConnection;
    ResultSet: IZResultSet;
    LastRowNr: Integer;//This is to detect row nr change
    InsertState: Boolean;

public
    constructor Create(Prot:string;Host:string;Prt:integer;DB:string;User:string;Pass:string);
    function connect():boolean;
    function IsConnect():boolean;
end;

implementation

constructor TConnection.Create(Prot:string;Host:string;Prt:integer;DB:string;User:string;Pass:string);
begin
    Protocol:=Prot;
    HostName:=Host;
    Port:=Prt;
    DataBase:=DB;
    UserName:=User;
    Password:=Pass;
end;

function TConnection.connect():boolean;
var
  Url: string;
begin
  if Port <> 0 then
  begin
    Url := Format('zdbc:%s://%s:%d/%s?UID=%s;PWD=%s', [Protocol, HostName,
      Port, Database, UserName, Password]);
  end
  else
  begin
    Url := Format('zdbc:%s://%s/%s?UID=%s;PWD=%s', [Protocol, HostName,
      Database, UserName, Password]);
  end;
  Connection := DriverManager.GetConnectionWithParams(Url, nil);
  Connection.SetAutoCommit(True);
  Connection.SetTransactionIsolation(tiReadCommitted);
//******AQUI ES DONDE TENDRIA Q TENER TODO ASEGURADO DE Q 
//******NO VA A DAR UN ERROR
  Connection.Open;
  connect:=not Connection.IsClosed;
end;

function TConnection.IsConnect():boolean;
begin
  if Assigned(Connection) then
    if not Connection.IsClosed then
      Connection.Close;
end;

end.
Desde ya muchas gracias, ayudenme asi luego posteo lo q sale de esto

saludos

vtdeleon 20-02-2007 01:09:07

Saludos

Bienvenido gushmaish al Club, espero que te sientas a gusto por esto lares:).

Antes que todo, pedirte que leas la guia de estilo, para que aprendas las normas del club y así sabes las reglas de juego;). Después a que aprendas a usar las etiquetas vB , para resaltar el código (puedes editar tu mensaje para que veas también).

Ahora vamos con tu duda. No he trabajado nunca con Zeus, pero si lo que quieres es mostrar tu mensaje personalizado ante un error invocado por la aplicación, podrías usar try...Except para el caso.

Código Delphi [-]
Try
 ///Sentencias
 ...
Except
 //En caso de error, 
 Showmessage('Lo que sea');
end;

roman 20-02-2007 02:37:48

Es como te dice Van Troi. Tienes que poner algo como:

Código Delphi [-]
function TConnection.connect():boolean;
var
  Url: string;

begin
  ...

  try
    Connection.Open;
  except
    // aquí manejas el error
  end;

  ...
end;

El punto es que no hay manera de saber de antemano si los datos son correctos, porque sólo el servidor puede determinarlo, y para "preguntárselo" tienes que comunicarte con él, esto es, abrir la conexión.

// Saludos

gushmaish 20-02-2007 15:08:16

gracias
 
muchas gracias colegas, eso anduvo a la perfeccion..

dtdeleon, me tomare el tiempo para leer y utilizar adecuadamente el codigo vB, disculpa las molestias

saludos


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

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