DirectMySQL122 Delphi ile MySQL’e doğrudan bağlanın

tr_escape

Üye
Katılım
6 May 2008
Mesajlar
632
Puanları
16
Bu yazıda DirectMySQL122 paketi yardımı ile MySQL ve Delphi bağlantısını inceleyelim.

MySQL ile uğraşanlar için en çok sıkıntı duyulan nokta veri tabanı bağlantısının bir ara yazılım ile çözülmüş olmasıdır.

Normalde MySQL bir Server’da çalışırken MyODBC gibi bir yazılım ile bu bilgilerin erişimi sağlanır.

Bu paket ile herhangi bir yazılım yüklemeden sadece komut yardımı ile MySQL bağlantısını sağlıyabiliyoruz.

Nasıl mı? Hemen başlayalım;



Öncelikle aşağıdakine benzer bir form tasarlıyalım;

form_mysql_directly_01.jpg


Bu forma dikkat ederseniz herhangi bir DBGRID vs.. gibi veri tabanı için tasarlanmış olan component bulunmuyor.

Şimdi de kodlamaya başlıyalım;



Kod:
unit main;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  uMySqlVio, uMysqlCT, uMysqlClient, uMysqlHelpers,      // eklediklerimiz...
  Grids, StdCtrls;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    edt_HOST: TEdit;
    edt_PORT: TEdit;
    edt_USER: TEdit;
    edt_PWD: TEdit;
    btn_Connect: TButton;
    edt_DBNAME: TEdit;
    btn_SendReques: TButton;
    Edit1: TEdit;
    StringGrid1: TStringGrid;
    Label6: TLabel;
    Edit2: TEdit;
    procedure ShowMySQLResults;                     // neticeleri gosteren rutin
    procedure btn_ConnectClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btn_SendRequesClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
    MySQL: TMySQLClient;
    MyResult: TMySQLResult;
    Executed, Stored : Boolean;
implementation
{$R *.dfm}
procedure TForm1.btn_ConnectClick(Sender: TObject);                // baglaniyoruz..
begin
  if not MySQL.Connected then
    begin
      try
        MySQL.Host     := edt_HOST.Text;
        MySQL.port     := strtoint( edt_PORT.text );
        MySQL.user     := edt_USER.Text;
        MySQL.password := edt_PWD.Text;
        MySQL.Db       := edt_DBNAME.Text;
        MySQL.connect;
      finally
        if MySQL.Connected then Edit2.Text := 'MySQL Veri vabanına bağlanıldı...'
          else Edit2.Text := 'MySQL Veri tabanı bağlantısı kayıp!!';
      end;
    end
    else
    begin
      try
        MySQL.reconnect;
      finally
        Edit2.Text := 'MySQL Veri vabanına bağlanıldı...';
      end;
    end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  MySQL := TMySQLClient.create;                              // form olusurken elimizde tutalim...
end;
procedure TForm1.btn_SendRequesClick(Sender: TObject);
begin
  if not Executed then
    begin
      MyResult := MySQL.query(Edit1.Text,true,Executed);
      if Executed then
        begin
          Executed := false;
          ShowMySQLResults;
        end;
    end;
end;
procedure TForm1.ShowMySQLResults;
var
  n,x: integer;
begin
  for n:=1 to StringGrid1.RowCount do
    StringGrid1.Rows[n].Clear;
  StringGrid1.Refresh;
  StringGrid1.RowCount := MyResult.RowsCount+1;
  StringGrid1.ColCount := MyResult.FieldsCount;
  n:=0;
  while n < MyResult.FieldsCount do
    begin
      StringGrid1.Cells[n,0] := MyResult.FieldDef(n).name ;             // field name leri yaziyoruz.
      inc(n);
    end;
  n:=0;
  while n < MyResult.RowsCount do
  begin
    for x:=0 to MyResult.FieldsCount-1 do
      StringGrid1.Cells[x,n+1] := MyResult.FieldValue(x);               // value leri yaziyoruz.
    inc(n,1);
    MyResult.Next;
    Continue;
  end;
  try
    MyResult.Free;
  except
  end;
end;
end.

Programı çalıştırdığımızda daha önce saklanmış olan veri tabanındaki bilgileri şu şekilde listeliyoruz;


form_mysql_directly_021.jpg


Bu projeye ait dosyaları ekten indirebilirsiniz.
 

Ekli dosyalar

  • DirectMySQL122.zip
    165.1 KB · Görüntüleme: 4

Forum istatistikleri

Konular
128,162
Mesajlar
915,577
Kullanıcılar
449,922
Son üye
11akif

Yeni konular

Çevrimiçi üyeler

Geri
Üst