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)
-   -   Conexión remota con Mysql (https://www.clubdelphi.com/foros/showthread.php?t=56731)

voldemmor 26-05-2008 17:06:10

Conexión remota con Mysql
 
Hola amigos, acudo a pedir su ayu nuevamente.

Estoy desarrollando con Mysql5+delphi6+Zeos

por favor, me pidieron que modifique mi sistema para que sea usado en varias maquinas sobre una misma base de datos.

trate de hacer esto

Código Delphi [-]
Ini := TIniFile.Create(RutaINI);
  try
    if(ini.ReadBool('DATABASE','conect',False)=true)then
    begin
    ZConnection1.Catalog:= Descifrar( ini.ReadString('DATABASE','catalog','nada'),clave);
    ZConnection1.Database := Descifrar( ini.ReadString('DATABASE','database','nada'),clave);
    ZConnection1.HostName := Descifrar( ini.readString('DATABASE','hostname','nada'),clave);
    ZConnection1.Password := Descifrar( ini.ReadString('DATABASE','password','nada'),clave);
    ZConnection1.User := Descifrar( ini.ReadString('DATABASE','user','nada'),clave);
    ZConnection1.Protocol := Descifrar( ini.ReadString('DATABASE','protocol','nada'),clave);
    ZConnection1.Connected := True;
    ShowMessage('coneccion exitosa');
    end;
  finally
  ini.Free;
  end;

pero me da un error

Código:


Acces violation att address 10003fff in module libmysqld5. write of address 000002f8

espero que me puedas explicar cual es mi error para lograr esta coneccion dinamicamente, o me redirijas a algun ejemplo

betiitooo 26-05-2008 22:11:27

Hola, no se que estas intentando con ese codigo que muestras.

En las aplicaciones que he desarrollado en las que uso una base de datos remota, mysql, utilizo un conector odbc el cual lo registro en el sistema operativo (Windows), como un dns, y para hacer la conexion desde la aplicacion uso los componentes ADO, utilizo un ADOConnection para conectarme al dns del sistema operativo, esto muy facil y yo no he tenido ningun problema en las aplicaciones, bueno si te interesa mas, por aki andaré

suerte

AzidRain 27-05-2008 01:16:07

ini no está definido por eso te manda el error, me parece que debe ser rutaini. El mensaje se refiere a un objeto que no ha sido creado toavía (como "ini").

voldemmor 27-05-2008 17:09:01

ini si esta definido
 
Si defino Ini como inifile, como variable de la unidad.

Y lo estoy encriptando con una funcion para mayor seguridad.

No tengo necesidad de declarar un enlase de datos en el sistema, ya que mi libreria Zeos con Zconnection, probee de conexion nativa, enm este caso a mySql.

El problema que tengo en que no se si estoy activando correctamente el componente Zconnection1, lueo de cargarles las propiedades, o necesito cargar alguna propiedad más.

Muchgas gracias de antemano

nippur 28-05-2008 00:14:47

No haces referencia al port, 3306 por default para mysql.
Tal vez te convendría poner valores por defecto válidos
por si se estropea o borra el .ini

Saludos,

enecumene 28-05-2008 03:24:01

No sé por qué te enlias tanto, como te habian mencionado anteriormente mejor usas ODBC y te sales del problema, es sencillo y rápido, y no hay que cambiar nada de tu sistema, digo, es sólo mi opinión. ;):rolleyes:.

Saludos.

voldemmor 28-05-2008 17:15:00

cual lio
 
Cita:

Empezado por enecumene (Mensaje 289519)
No sé por qué te enlias tanto, como te habian mencionado anteriormente mejor usas ODBC y te sales del problema, es sencillo y rápido, y no hay que cambiar nada de tu sistema, digo, es sólo mi opinión. ;):rolleyes:.

Saludos.

El lio con el odbc es la seguridad, tienes los datos en el registro, si alguien sabe puede ingresar, y para el lugar donde lo tengo que entregar es ese el problema, por esto que uso el .ini y ademas lo cifro, con lo cual me evito esto.

Ademas las librerias de Zeos proveen conexion nativa, lo cual me brinda una mejor respuesta al manjar el volumen de datos que ODBC, ya que solia desarrollar usando esta tecnica con anterioridad,

Ademas, ya esta desarrollado casi todo el sistema y solo tengo que pulir los informes y esta coneccion que me solicitaron, a ultima hora.

Razon por la cual se hace prancticamente imposible por el tiempo cambiarme a usar ODBC, ya que lo tengo que entregar ya.

Muchas gracias por tu interes

nippur 29-05-2008 15:43:16

Si usas el puerto por defecto, tu código no tiene errores, tenés mal instalada
la zeos. Yo utilizo la misma lógica de un .ini cifrado y no tengo problemas tanto con delphi 5 como delphi 7.

Le agregaste al path de Library la carpeta build dentro de
\zeos\packages\delphi6\build ??

Saludos

voldemmor 29-05-2008 18:04:56

Si funciona Zeos
 
Si tengo funcional la libreria.

Creo que no me he explicado bien.

Mi duda es como activar mi conexion dinamicamente a esta DB remota.
muchas gracias por sus respuestas

BlackDaemon 23-11-2008 19:42:50

Hola

No sé si ya lo solucionaste, supongo que si ya que es tiempo jeje
Pero igual podrías haber puesto cómo lo solucionaste para otras personas.. en fin, pensé que podría ser que no tienes las dll's que necesitan las zeos para realizar la conexión, ya que estas las debes copiar a system32 el pc donde correrá tu app usando dichas librerías

Saludos!

nippur 10-02-2009 00:18:02

Solución
 
Cita:

Empezado por BlackDaemon (Mensaje 327510)
Hola

No sé si ya lo solucionaste, supongo que si ya que es tiempo jeje
Pero igual podrías haber puesto cómo lo solucionaste para otras personas.. en fin, pensé que podría ser que no tienes las dll's que necesitan las zeos para realizar la conexión, ya que estas las debes copiar a system32 el pc donde correrá tu app usando dichas librerías

Saludos!

Perdón por la demora pero paso a comentarles la solución que vino de San Google buscando encontré un pdf donde explica como instalar la librería Zeos y no morir en el intento, seguí los pasos y anduvo a la primera.

Les dejo el link por si alguno lo necesita http://www.intitec.com/varios/Como_instalar_ZeosLib.pdf

Saludos
Nippur
Mar del Plata

AzidRain 10-02-2009 20:53:29

Vaya...ya me siento importante...hasta donde anda ya mi modesto tutorial...que bueno que te sirvió, estaba a punto de posteartelo aquí.

foxito 21-11-2009 15:11:11

Hola voldemmor, fijate que tuve el mismo problema que tuvistes. Estuve buscandon en la red con SAN GOOGLE y no encontre nada al respecto hasta que caí en tu post que mencionabas el mismo probema. Talvez ya fuera de tiempo porque ha pasado bastante tiempo... Si todavia te interesa comentame ya lo resolvi... se me ocurrio algo y obtuve lo que queria.

SALUDOS.:)

voldemmor 21-11-2009 17:33:14

Gracias
 
Cita:

Empezado por foxito (Mensaje 347129)
Hola voldemmor, fijate que tuve el mismo problema que tuvistes. Estuve buscandon en la red con SAN GOOGLE y no encontre nada al respecto hasta que caí en tu post que mencionabas el mismo probema. Talvez ya fuera de tiempo porque ha pasado bastante tiempo... Si todavia te interesa comentame ya lo resolvi... se me ocurrio algo y obtuve lo que queria.

SALUDOS.:)


Gracias por la preocupacion, la verdad es que lo pude resolver, con todo podes colocar la informacion aca a ver alguien mas la necesita y la puede usar.

Con todo a ver si qe crusan las soluciones que tenemos y podemos mejorarlas un poco.

foxito 23-11-2009 16:36:51

Bueno aqui mi solución::)

Código Delphi [-]
program ContaSys;
uses
  Forms,
  UFMain in 'UFMain.pas' {FMain},
  Acercade in 'Acercade.pas' {FrmAcercaDe},
  UFLogin in 'UFLogin.pas' {FLogin},
  UMySQL in 'UMySQL.pas',
  IniFiles,
  SysUtils,
  UDMContaSys in 'UDMContaSys.pas' {DataModule1: TDataModule},
  UFCompras_Gastos in 'UFCompras_Gastos.pas' {FComprasGtos},
  FindProv in 'FindProv.pas' {FrmFindProv};
{$R *.res}
begin
  if TFLogin.Execute then
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.Title := 'ContaSys 1.0.1';
      Application.CreateForm(TDataModule1, DataModule1);
      Application.CreateForm(TFComprasGtos, FComprasGtos);
  with tinifile.create (changefileext(paramstr(0),'.ini')) do
        with DataModule1  do
          begin
            Connect.Catalog    := ReadString('Acceso a BD','Base datos','');
            Connect.Database   := ReadString('Acceso a BD','Base datos','');
            Connect.HostName   := ReadString('Acceso a BD','Servidor','');
            Connect.LoginPrompt:= False;
            Connect.User       := ReadString('Acceso a BD','Usuario','');
            Connect.Password   := 'hecafox';
            Connect.Protocol   := ReadString('Acceso a BD','Proveedor','');
            Connect.Port       := ReadInteger('Acceso a BD','Puerto',0);
            Connect.Connected  := True;
           end;
//      Application.CreateForm(TFMain, FMain);
      Application.Run;
      end
  else
    begin
      Application.MessageBox('No tiene Autorización a entrar a la Aplicación.', 'Advertencia');
    end;
end.


La franja horaria es GMT +2. Ahora son las 09:04:05.

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