Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

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
  n11.com Api Bağlantısı hi_selamlar 4 409 30-08-2018, Saat: 02:52
Son Yorum: hi_selamlar
  Database tasarım önerisi klavye 4 162 31-07-2018, Saat: 18:15
Son Yorum: klavye
  Mysql Büyükten Küçüğe Sıralama Sorunu hakanharbeli 4 278 25-04-2018, Saat: 08:26
Son Yorum: yhackup
  Mysql db'ye bağlantı kurma Dostk 3 345 05-04-2018, Saat: 19:55
Son Yorum: faktoral
  Database random Dostk 7 618 07-03-2018, Saat: 12:38
Son Yorum: Dostk



Konuyu Okuyanlar: 1 Ziyaretçi