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 20-02-2007
gushmaish gushmaish is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Poder: 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
  #2  
Antiguo 20-02-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 20-02-2007
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
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
Responder Con Cita
  #4  
Antiguo 20-02-2007
gushmaish gushmaish is offline
Registrado
 
Registrado: feb 2007
Posts: 4
Poder: 0
gushmaish Va por buen camino
Talking 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
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Herramienta case para diccionario de datos de base de datos firebird mcalmanovici Firebird e Interbase 1 11-02-2007 15:17:37
Existencia de Base de Datos urtKami Firebird e Interbase 4 05-11-2006 19:36:42
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Chequear existencia de una BD vichovi Conexión con bases de datos 3 22-09-2003 23:17:48
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 04:24:48.


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