15-02-2020, Saat: 13:40
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;
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;