AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zwei Anwendungen, eine Datenbank - Synchronisieren???
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Anwendungen, eine Datenbank - Synchronisieren???

Ein Thema von romber · begonnen am 13. Feb 2005 · letzter Beitrag vom 14. Feb 2005
 
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Zwei Anwendungen, eine Datenbank - Synchronisieren???

  Alt 14. Feb 2005, 00:47
Schreibe dir doch eine Stored Procedure, der du als Parameter den Benutzernamen übergibst und gleichzeitig über einen OUTPUT-Parameter das Passwort aus der DB holst ...

Das hat folgende Vorteile ...
- dein Problem mit dem Refresh löst sich in Luft auf
- die durch ADO gefetchte Datenmenge ist extrem klein (und somit schnell)
- du kannst tausende User Anlegen ohne das die "Abfrage" spührbar langsamer wird
- du sparst Locate bzw. Lookup in deiner ADOTable ... spart noch mal Zeit ...


[EDIT]
Kleines Beispiel

SQL SERVER ...

SQL-Code:
CREATE PROCEDURE GetPasswd
  @Username varchar(20), -- Input Parameter, muss durch dein Prog übergeben werden
  @Passwd OUTPUT varchar(20) -- da landet dein Passwort drin. Den Parameter kannst du mit Delphi auswerten
AS
  -- Benutzertabelle abfragen und Variable @Passwd füllen
  SELECT @Passwd = EncryptedPasswd
  FROM Benutzertabelle
  WHERE UPPER(FELD_Benutzername) = UPPER(@Username)

RETURN
GO
In Delphi ...

Delphi-Quellcode:
function Login(Username,Password:String):boolean;
var SP: TAdoStoredProc;
    pw:Variant;
begin
// ungetestet
// gibt true zurück wenn User und DB übereinstimmen

  Result:=False;

  // TADOStoredProc zur Laufzeit erstellen
  SP := TAdoStoredProc.Create(nil);

  try
    // SP mit deiner TADOConnection verbinden
    SP.Connection := deine_Adoconnection;

    // SP mit der Stored Procedure 'GetPasswd' verbinden
    SP.ProcedureName := 'GetPasswd';

    // Parameterlisten holen
    SP.Parameters.Refresh;

    // Input Parameter 'Username' füllen
    SP.Parameters[1].Value := Username;

    // SP ausführen und offen halten (nicht SP.Execute, da du den Output Parameter noch abfragen musst ...
    SP.Open;

    // Output Parameter aus SP lesen
    pw:=SP.Parameters[2].Value;
    
    // SP Schließen
    SP.CLose
  finally
    // SP freigeben
    FreeAndNil(SP);
  end;
  
  // Wenn der Benutzer nicht in der DB gefunden wurde ist der Output Parameter der SP = NULL
  if vartype(pw) = vtNULL then
  begin
    result:=false;
    Showmessage('Hi, dich kenne ich nicht... '+#13#10+
                'Wenn du neu bist melde dich bitte beim Admin !'+#13#10+
                'Falls du dich vertippt hast, versuche es noch einmal.');
    exit;
  end;

  // vergleichen ob das Passwort aus der DB mit Password übereinstimmt ...
  Result:= ((Decrypt(PW)=Password);

end;
[/EDIT]


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz