tr_escape
Üye
- Katılım
- 6 May 2008
- Mesajlar
- 633
- 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;
Bu forma dikkat ederseniz herhangi bir DBGRID vs.. gibi veri tabanı için tasarlanmış olan component bulunmuyor.
Şimdi de kodlamaya başlıyalım;
Programı çalıştırdığımızda daha önce saklanmış olan veri tabanındaki bilgileri şu şekilde listeliyoruz;
Bu projeye ait dosyaları ekten indirebilirsiniz.
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;
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;
Bu projeye ait dosyaları ekten indirebilirsiniz.