Einzelnen Beitrag anzeigen

xReva

Registriert seit: 15. Nov 2016
20 Beiträge
 
#31

AW: ADOQuery - SQLQuery ??

  Alt 18. Apr 2017, 19:03
http://prntscr.com/exylrv Da ist der Fehler zu sehen



Delphi-Quellcode:
unit try3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB,ShellAPI,
  Data.FMTBcd, Data.SqlExpr;

type
  TForm1 = class(TForm)
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    Button1: TButton;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from taccounts where susername='''+edit1.Text+''' and suserpass='''+edit2.Text+''' ');
ADOQuery1.Open;
if not ADOQuery1.Eof then
begin
ShellExecute(Application.Handle, 'open', PChar('C:\Program Files (x86)\Internet Explorer\iexplore.exe'), nil, nil, SW_NORMAL);
end
else


ShowMessage('Falscher Benutzername oder Password!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ADOQuery1.ParamCheck := true; // Bewirkt, dass die Parameter direkt 'initialisiert' = Erstellt werden!!

  ADOQuery1.SQL.Text:='INSERT into taccounts (nEMID,sUsername,sUserPass,sUserPassSalt,sEmail,nAuthID,sIP) ' +
    'Values (:nEMID,:sUsername,:sUserPass,:sUserPassSalt,:email,:AuthID,:sIP)' ;

{ Brauchst Du nicht wegen ADOQuery1.ParamCheck := true
  ADOQuery1.Sql.Clear;
  ADOQuery1.Parameter.Clear;
  ADOQuery1.Parameter.CreateParam(ftString, 'Username', ptInputOutput);
  ADOQuery1.Parameter.CreateParam(ftString, 'UserPass', ptInputOutput);
  ADOQuery1.Parameter.CreateParam(ftString, 'UserPassSalt', ptInputOutput);
  ADOQuery1.Parameter.CreateParam(ftString, 'email', ptInputOutput);
  ADOQuery1.Parameter.CreateParam(ftInteger, 'AuthID', ptInputOutput);
  ADOQuery1.Parameter.CreateParam(ftString, 'sIP', ptInputOutput);
}


  ADOQuery1.Parameters.ParamByName('nEMID').Value := '4'; // Hier fehlte das 's', siehe dein SQL Values (:sUsername
  ADOQuery1.Parameters.ParamByName('sUsername').Value := edit3.text; // Hier fehlte das 's', siehe dein SQL Values (:sUsername
  ADOQuery1.Parameters.ParamByName('sUserPass').Value := edit4.text;
  ADOQuery1.Parameters.ParamByName('sUserPassSalt').Value := edit5.text;
  ADOQuery1.Parameters.ParamByName('email').Value := edit6.text;
  ADOQuery1.Parameters.ParamByName('AuthID').Value := '4';
  ADOQuery1.Parameters.ParamByName('sIP').Value := edit7.text; // Hier stand 'email' statt das 'sIP'

  if (ADOQuery1.ExecSQL() = 1) then begin // Prüfen, ob der Insert erfolgreich war

    ADOQuery1.SQL.Clear;
// ADOQuery1.Parameter.Clear; // Wird beim löschen des SQL-Befehls direkt wieder entfernt...

    ADOQuery1.Open;



    ADOQuery1.Close;
  end;
end;




end.
  Mit Zitat antworten Zitat