Ver Mensaje Individual
  #1  
Antiguo 20-02-2007
gushmaish gushmaish is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Reputación: 0
gushmaish Va por buen camino
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

Última edición por vtdeleon fecha: 20-02-2007 a las 01:05:56.
Responder Con Cita