Delphi Can
Datasnap mysql donma sorunu. - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Datasnap mysql donma sorunu. (/showthread.php?tid=4528)



Datasnap mysql donma sorunu. - seci20 - 15-02-2020

Merhaba ustalarım. Datasnap dsauthenticationmanager kısmında kullanıcı adı şifre kontrolü yapıyorum. Mysql olarak yapıyorum lakin belli bir süre sonra donmalar meydana geliyor ve sunucu kullanılmaz oluyor. Anlık olarak 300 kullanıcıya çıkabiliyor bazen. Merak ettiğim konu şu. Mysql bağlantısını auth kısmında create yapıyorum ve işlem bitince free yapıyorum. Donma sebebi bu olabilirmi ? Doğru kullanım bumudur ? Formda objeleri oluşturup kullanmakmı doğrusudur yardımlarınızı bekliyorum.


Kullanıdığım kod.


procedure TScForm.DSAuthenticationManager1UserAuthenticate(
 Sender: TObject; const Protocol, Context, User, Password: string;
 var valid: Boolean; UserRoles: TStrings);
 var
 con1: TSQLConnection;
 conqurty: TMyQuery;
begin

con1 :=TSQLConnection.Create(nil);
conqurty:=  TMyQuery.Create(nil);
try
conqurty.Connection:= con1;


 QUsr.Close;
 QUsr.SQL.Text:='select * from **** where username='+QuotedStr(User);
 QUsr.Open;

 if QUsr.RecordCount = 0 then
 valid := false
 else
 valid := True;
finally

conqurty.Free;
con1.Free;
end;
end;



Datasnap mysql donma sorunu. - otonomi - 15-02-2020

Datasnap projesi oluştururken, project wizard ekranında aşağıdaki sırayla gitmeni tavsiye ederim;

Forms Application > VCL Application > TDataModule

Bu şekilde ServerMethods1 ve ServerContainer1 aslında TDataModule halindedir.

ServerMethods1 üzerine koyacağın TFDConnection nesnesi üzerinden veritabanı bağlantılarını yaparsan başın ağrımaz

DSAuthenticationManager1UserAuthenticate bulunduğu UNIT türü (her ne kadar TDataModule olsa bile) Authentication & Transportation amaçlı yapılmış, allengirli veritabanı işlemleri için tavsiye edilmiyor (her ne kadar Session bile olsa)

ServerContainer1 üzerine birer adet FDConnection1, FDQuery1, FDGUIxWaitCursor1, FDPhysMySQLDriverLink1 koy, sonra da aşağıdaki kodu yaz, cillop gibi çalışır

Aşağıdaki kodu denedim, çalışıyor

procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(Sender: TObject; const Protocol, Context, User, Password: string; var valid: Boolean; UserRoles: TStrings);
begin
FDConnection1.Connected:=True;
FDQuery1.Active:=False;
FDQuery1.SQL.Clear;
FDQuery1.Params.Clear;
FDQuery1.SQL.Add('SELECT * FROM user_table ');
FDQuery1.SQL.Add('WHERE user_name='+QuotedStr(User)+' AND pass_word='+QuotedStr(Password));
FDQuery1.Active:=True;
FDQuery1.First;
if FDQuery1.RecordCount=0 then
valid:=false
else
valid:=True;
FDQuery1.Active:=False;
FDConnection1.Connected:=False;
end;


Cvp: Datasnap mysql donma sorunu. - seci20 - 15-02-2020

(15-02-2020, Saat: 13:40)otonomi Adlı Kullanıcıdan Alıntı: Datasnap projesi oluştururken, project wizard ekranında aşağıdaki sırayla gitmeni tavsiye ederim;

Forms Application > VCL Application > TDataModule

Bu şekilde ServerMethods1 ve ServerContainer1 aslında TDataModule halindedir.

ServerMethods1 üzerine koyacağın TFDConnection nesnesi üzerinden veritabanı bağlantılarını yaparsan başın ağrımaz

DSAuthenticationManager1UserAuthenticate bulunduğu UNIT türü (her ne kadar TDataModule olsa bile) Authentication & Transportation amaçlı yapılmış, allengirli veritabanı işlemleri için tavsiye edilmiyor (her ne kadar Session bile olsa)

ServerContainer1 üzerine birer adet FDConnection1, FDQuery1, FDGUIxWaitCursor1, FDPhysMySQLDriverLink1 koy, sonra da aşağıdaki kodu yaz, cillop gibi çalışır

Aşağıdaki kodu denedim, çalışıyor

procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(Sender: TObject; const Protocol, Context, User, Password: string; var valid: Boolean; UserRoles: TStrings);
begin
 FDConnection1.Connected:=True;
 FDQuery1.Active:=False;
 FDQuery1.SQL.Clear;
 FDQuery1.Params.Clear;
 FDQuery1.SQL.Add('SELECT * FROM user_table ');
 FDQuery1.SQL.Add('WHERE user_name='+QuotedStr(User)+' AND pass_word='+QuotedStr(Password));
 FDQuery1.Active:=True;
 FDQuery1.First;
 if FDQuery1.RecordCount=0 then
   valid:=false
 else
   valid:=True;
 FDQuery1.Active:=False;
 FDConnection1.Connected:=False;
end;

Tamamdır hocam test edeceğim teşekkür ederim.