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)
-   -   no puedo conectar mi aplicacion a la base de datos (https://www.clubdelphi.com/foros/showthread.php?t=94255)

shinopeat87 21-10-2019 20:50:16

no puedo conectar mi aplicacion a la base de datos
 
hola amigos como estan espero recibir una vez mas su ayuda. les comento que me he enriquecido de informacion con el tema de los archivos.ini para la conexion de mi aplicacion con mysql.
tengo dos maquinas (A) y (B)conectadas en red, en la maquina A he instalado mysql server 5.7 y he creado una aplicacion de ventas que se conecta a una base de datos creada mediante workbrench, tengo las librerias de mysql (libmysl.dll) en su lugar y todo funciona correctamente.
he creado un archivo.ini llamado conexionbase.ini donde tengo escrito los siguientes parametros que necesito para que el componente FIDERAC
me realize la correcta conexion.

[bd]
Database="Grsistema-db"
[usuario]
User_Name="root"
[pas]
Password="root"
[servidor]
Server="localhost"
[driver]
DriverID="MySQL"
[puerto]
Port="3306"

en el evento oncreate del formprincipal puse el siguiente codigo

Código Delphi [-]
procedure TFormlogin.FormCreate(Sender: TObject);
var
bd,usuario,pas,servidor,driver,puerto : string;
IniFile : TIniFile ;
begin
  with ModuloDatos do
  begin
   con1.Connected:=False;
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conexionbase.ini');
   bd := IniFile.ReadString('bd','Database','');
   usuario := IniFile.ReadString('usuario','User_Name','');
   pas := IniFile.ReadString('pas','Password','');
   servidor:= IniFile.ReadString('servidor','Server','');
   driver := IniFile.ReadString('driver','DriverID','');
   puerto := IniFile.ReadString('puerto','Port','');

   If bd = '' then
   begin
   ShowMessage('Error al cargar Base de Datos');
   Application.Terminate;
   end
   else
   begin
   con1.Params.Clear;

   con1.Params.Database:= bd;
   con1.Params.UserName:=usuario;
   con1.Params.Password:=pas;
   con1.Params.Add('Server='+servidor);
   con1.Params.DriverID:=driver;
   con1.Params.Add('Port='+puerto);
   con1.Connected:= True;
   end;

  end;

end;
esto me levanta sin problemas el programa ya que este lee lo que tiene el archivo.ini y se conecta a la base de datos
ahora mi problema es el siguiente, tenia entendido que cuando lleve la aplicacion a la maquina B solo deberia modificar el archivo ini

[servidor]
Server="localhost" por "ipdelservidor"

lo hago pero al iniciar el programa me tira este error :

[FireDAC][phys][Mysql]Access denied for user 'root'@'ipdelamaquinaB'(using password: YES)

no se a que se debe.. instale workbrench en la maquina B y pude conectarme remotamente pero no puedo hacerlo desde mi aplicacion.

shinopeat87 21-10-2019 21:10:13

creo que encontre la solucion diganme si estoy en lo correcto:

cambie el nombre del usuario a conexionmaquinaB que es el nombre de mi usuario en la conexion remota y en server puse la ip del servidor
todo esto es del archivo. ini

[bd]
Database="Grsistema-db"
[usuario]
User_Name="conexionmaquinaB"
[pas]
Password="root"
[servidor]
Server="ipdelservidor"
[driver]
DriverID="MySQL"
[puerto]
Port="3306

:')

Casimiro Notevi 21-10-2019 22:33:34

También puedes dejarlo así:
Código:

[bd]
Database="Grsistema-db"
User_Name="conexionmaquinaB"
Password="root"
Server="ipdelservidor"
DriverID="MySQL"
Port="3306


shinopeat87 22-10-2019 01:08:32

Casimiro Notevi amigo si lo cambio a como tu indicas debo cambiar algo de codigo? o simplemente lo toma igual? hablo de este parte del codigo:


Código Delphi [-]
  con1.Connected:=False;
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conexionbase.ini');
   bd := IniFile.ReadString('bd','Database','');
   usuario := IniFile.ReadString('usuario','User_Name','');
   pas := IniFile.ReadString('pas','Password','');
   servidor:= IniFile.ReadString('servidor','Server','');
   driver := IniFile.ReadString('driver','DriverID','');
   puerto := IniFile.ReadString('puerto','Port','');

Arturo.Molina 22-10-2019 08:22:09

Cita:

Empezado por shinopeat87 (Mensaje 534040)
Casimiro Notevi amigo si lo cambio a como tu indicas debo cambiar algo de codigo? o simplemente lo toma igual? hablo de este parte del codigo:

Código Delphi [-]
con1.Connected:=False;
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conexionbase.ini');
bd := IniFile.ReadString('bd','Database','');
usuario := IniFile.ReadString('usuario','User_Name','');
pas := IniFile.ReadString('pas','Password','');
servidor:= IniFile.ReadString('servidor','Server','');
driver := IniFile.ReadString('driver','DriverID','');
puerto := IniFile.ReadString('puerto','Port','');

Hola shinopeat87, sí, deberías modificar el nombre de la sección del archivo ini de donde lees los parámetros, pero yo además, eliminaría parte del codigo, que es redundante, para dejarlo así:
Código Delphi [-]
begin
con1.Connected:=False;
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'conexionbase.ini');
con1.Params.Clear;
con1.Params.Database:= IniFile.ReadString('db', 'Database', '');
con1.Params.UserName:= IniFile.ReadString('db', 'User_Name', '');
con1.Params.Password:= IniFile.ReadString('db', 'Password', '');
con1.Params.Add('Server='+ IniFile.ReadString('db','Server','') );
con1.Params.DriverID:= IniFile.ReadString('db','DriverID','');
con1.Params.Add('Port='+ IniFile.ReadString('db','Port','') );

If bd = '' then
begin
ShowMessage('Error al cargar Base de Datos');
Application.Terminate;
end else
con1.Connected:= True;
end;

IniFile.Close;   // ----Recuerda tambien que debes cerrar el archivo ini cuando acabes de usarlo

Saludos

Casimiro Notevi 22-10-2019 09:41:06

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 22:21:49.

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