Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mysql database bağlantısı
#1
Merhaba,

Bu zamana kadar db olarak sqlite kullandım. Fakat şimdi mecburen mysql kullanmak durumundayım. Nedeni ise birden fazla kullanıcı aynı anda aynı db bağlanacak. Localhosta bağlantıda sorun yok. Serverdeki ortak olan mysql db bağlantı kurmak için nasıl bir yol izlemeliyim?

Birde (EmbeddedArgs.Text) yerine (EmbeddedArgs.Add) kullanmak istiyorum kodlamayı daha iyi anlamak adına.

procedure TForm1.Button1Click(Sender: TObject);
begin
  With FDPhysMySQLDriverLink do
  begin
    Release;
    DriverID := 'MySQL';
    VendorLib := ExtractFilePath(Application.Exename) + 'libmysqld.dll';
    EmbeddedArgs.Add('--basedir=<C:\MySQL>');
    EmbeddedArgs.Add('--datadir=<C:\Server\MySQL>');
    EmbeddedArgs.Add('--skip-innodb');

    EmbeddedArgs.Text := '' + '--basedir=' +
      ExtractFilePath(Application.Exename) + ';' + '--datadir=' +
      ExtractFilePath(Application.Exename) + '\LIST;' + '--language=' +
      ExtractFilePath(Application.Exename) + ';' + '--skip-innodb;' +
      '--skip-networking;';
  end;
  begin
    FDConnection.Connected := False;
    FDConnection.LoginPrompt := False;
    FDConnection.Params.Clear;
    FDConnection.Params.Values['DriverID'] := 'MySQL';
    FDConnection.Params.Values['CharacterSet'] := 'utf8';
    FDConnection.Params.Values['Database'] := 'PGDB';
    FDConnection.Connected := True;

    UserFDQuery.Active := False;
    UserFDQuery.Connection := FDConnection;
    UserFDQuery.Close;
    UserFDQuery.SQL.Clear;
    UserFDQuery.SQL.Add('Select * From USERS');
    UserFDQuery.Prepared := True;
    UserFDQuery.Open;
    if Not UserFDQuery.IsEmpty then
    begin
      ComboBoxUser.Items.Clear;
      while Not UserFDQuery.Eof do
      begin
        ComboUser.Items.Add(UserFDQuery.FieldByName('USNAME').AsString);
        Next;
      end;
Cevapla
#2
Serverınızda mysql 3306 portu açık olmalı FDConnection.server:='ip adresiniz' //fdconnectionda böylemi bilmiyorum unidac'ın uniconnection nesnesinde bu şekilde


örnek kendi kullandığım yöntem


procedure TfrmMain.FormCreate(Sender: TObject);
var
inidosya : TMemIniFile;
begin

{$region 'MYSQL 1 INI FILE UPDATE'}
if not FileExists(ExtractFilePath(ParamStr(0))+ 'MYSQL-1.ini') then
begin
inidosya := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MYSQL-1.ini', TEncoding.UTF8);

mysqlOneServer:='127.0.0.1';
mysqlOneDatabase:='DATABASE';
mysqlOneUserName:='USERNAME';
mysqlOnePassword:='PASSWORD';
mysqlOnePort:=3306;
mysqlOneCharSet:='utf8';
mysqlOneUseUnicode:=True;


 try
  Inidosya.WriteString ('setings','SERVER',      mysqlOneServer);
  Inidosya.WriteString ('setings','DATABASE',    mysqlOneDatabase);
  Inidosya.WriteString ('setings','USERNAME',    mysqlOneUserName);
  Inidosya.WriteString ('setings','PASSWORD',    mysqlOnePassword);
  Inidosya.WriteInteger('setings','PORT',        mysqlOnePort);
  Inidosya.WriteString ('setings','CHARSET',     mysqlOneCharSet);
  inidosya.WriteBool   ('setings','USEUNICODE',  mysqlOneUseUnicode);
  inidosya.UpdateFile;

 finally
  inidosya.Free;

 end;



end
else
begin



 inidosya := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MYSQL-1.ini', TEncoding.UTF8);
   try


    mysqlOneServer:=     Inidosya.ReadString('setings', 'SERVER', '127.0.0.1');
    mysqlOneDatabase:=   Inidosya.ReadString('setings', 'DATABASE', '');
    mysqlOneUserName:=   Inidosya.ReadString('setings','USERNAME', 'SYSDBA');
    mysqlOnePassword:=   Inidosya.ReadString('setings','PASSWORD', 'masterkey');
    mysqlOnePort:=       Inidosya.ReadInteger('setings','PORT',3306);
    mysqlOneCharSet:=    Inidosya.ReadString('setings','CHARSET', 'utf8');
    mysqlOneUseUnicode:= inidosya.ReadBool('setings','USEUNICODE',True);


   finally
    FreeAndNil(inidosya);
   end;


end;



{$endregion}



procedure TfrmMain.MysqlOneConnect;
begin
conMysql.Disconnect;
conMysql.Server:=mysqlOneServer;
conMysql.Database:=mysqlOneDatabase;
conMysql.Username:=mysqlOneUserName;
conMysql.Password:=mysqlOnePassword;
conMysql.Port:=mysqlOnePort;
conMysql.SpecificOptions.Values['Charset']:=mysqlOneCharSet;
if mysqlOneUseUnicode then
conMysql.SpecificOptions.Values['UseUnicode']:='True'
else
conMysql.SpecificOptions.Values['UseUnicode']:='False';
conMysql.Connect;
end;

“Do. Or do not. There is no try.”
Cevapla
#3
(30-03-2018, Saat: 04:04)masteryoda Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlServerınızda mysql 3306 portu açık olmalı FDConnection.server:='ip adresiniz' //fdconnectionda böylemi bilmiyorum unidac'ın uniconnection nesnesinde bu şekilde


örnek kendi kullandığım yöntem


procedure TfrmMain.FormCreate(Sender: TObject);
var
inidosya : TMemIniFile;
begin

{$region 'MYSQL 1 INI FILE UPDATE'}
if not FileExists(ExtractFilePath(ParamStr(0))+ 'MYSQL-1.ini') then
begin
inidosya := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MYSQL-1.ini', TEncoding.UTF8);

mysqlOneServer:='127.0.0.1';
mysqlOneDatabase:='DATABASE';
mysqlOneUserName:='USERNAME';
mysqlOnePassword:='PASSWORD';
mysqlOnePort:=3306;
mysqlOneCharSet:='utf8';
mysqlOneUseUnicode:=True;


 try
  Inidosya.WriteString ('setings','SERVER',      mysqlOneServer);
  Inidosya.WriteString ('setings','DATABASE',    mysqlOneDatabase);
  Inidosya.WriteString ('setings','USERNAME',    mysqlOneUserName);
  Inidosya.WriteString ('setings','PASSWORD',    mysqlOnePassword);
  Inidosya.WriteInteger('setings','PORT',        mysqlOnePort);
  Inidosya.WriteString ('setings','CHARSET',     mysqlOneCharSet);
  inidosya.WriteBool   ('setings','USEUNICODE',  mysqlOneUseUnicode);
  inidosya.UpdateFile;

 finally
  inidosya.Free;

 end;



end
else
begin



 inidosya := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MYSQL-1.ini', TEncoding.UTF8);
   try


    mysqlOneServer:=     Inidosya.ReadString('setings', 'SERVER', '127.0.0.1');
    mysqlOneDatabase:=   Inidosya.ReadString('setings', 'DATABASE', '');
    mysqlOneUserName:=   Inidosya.ReadString('setings','USERNAME', 'SYSDBA');
    mysqlOnePassword:=   Inidosya.ReadString('setings','PASSWORD', 'masterkey');
    mysqlOnePort:=       Inidosya.ReadInteger('setings','PORT',3306);
    mysqlOneCharSet:=    Inidosya.ReadString('setings','CHARSET', 'utf8');
    mysqlOneUseUnicode:= inidosya.ReadBool('setings','USEUNICODE',True);


   finally
    FreeAndNil(inidosya);
   end;


end;



{$endregion}



procedure TfrmMain.MysqlOneConnect;
begin
conMysql.Disconnect;
conMysql.Server:=mysqlOneServer;
conMysql.Database:=mysqlOneDatabase;
conMysql.Username:=mysqlOneUserName;
conMysql.Password:=mysqlOnePassword;
conMysql.Port:=mysqlOnePort;
conMysql.SpecificOptions.Values['Charset']:=mysqlOneCharSet;
if mysqlOneUseUnicode then
conMysql.SpecificOptions.Values['UseUnicode']:='True'
else
conMysql.SpecificOptions.Values['UseUnicode']:='False';
conMysql.Connect;
end;

Soruma cevap ol masada vakit ayırdığınız için teşekkür ederim.
Cevapla
#4
with FDPhysMySQLDriverLink do begin
       DriverID  := 'MySQL';
       VendorLib := 'libmysql.dll';
     end;

     
     with FDConnection do begin
       DriverName  := 'MySQL';
       LoginPrompt := false;
       Params.DriverID := 'MySQL';
       Params.UserName := 'root';
       Params.Password := '';
       Params.Add('Server=localhost');
       Params.Add('Port=3306');
       Connected := true;                            
     end;
   except
     on E:Exception do
       Connect := E.Message;
   end;
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]-n11.com Api Bağlantısı hi_selamlar 3 161 29-06-2018, Saat: 14:46
Son Yorum: hi_selamlar
  Mysql Büyükten Küçüğe Sıralama Sorunu hakanharbeli 4 172 25-04-2018, Saat: 08:26
Son Yorum: yhackup
  Mysql db'ye bağlantı kurma Dostk 3 243 05-04-2018, Saat: 19:55
Son Yorum: faktoral
  Database random Dostk 7 391 07-03-2018, Saat: 12:38
Son Yorum: Dostk
  Php vb. kullanmadan Mysql upload nehirnnn 18 736 12-02-2018, Saat: 11:13
Son Yorum: esistem



Konuyu Okuyanlar: 1 Ziyaretçi