![]() |
AW: ADOQuery - SQLQuery ??
![]()
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. |
AW: ADOQuery - SQLQuery ??
Dann schaue DIr doch mal diese Zeilen an:
Zitat:
Ich sag nur 'Clear' -> 'Open'! Was soll denn da für ein SQL-Befehl geöffnet werden? Wenn Du das nach dem dem ExecSQL nicht mehr brauchst, dann kannst Du es auch weglassen. |
AW: ADOQuery - SQLQuery ??
Oh man jetzt kriege ich diese Meldung :
![]() |
AW: ADOQuery - SQLQuery ??
Mir ist nicht klar, was Du hiermit bezweckst:
Delphi-Quellcode:
Das Open setzt das Vorhandensein eines gültigen SQL-Statements voraus, kann daher nach einem ADOQuery1.SQL.Clear nur zu der von Dir erhaltenen Fehlermeldung führen, da dann kein SQL-Statement mehr vorhanden ist.
// Wurde ein Datensatz eingefügt?
if (ADOQuery1.ExecSQL() = 1) then begin // Lösche das letzte SQL ADOQuery1.SQL.Clear; // und führe nun das nicht existierende SQL aus? ADOQuery1.Open; // Und schließe es sofort? ADOQuery1.Close; end; |
AW: ADOQuery - SQLQuery ??
Also wenn ich das open und das close rausnehme kommt keine Fehlermeldung mehr allerdings passiert in der db auch nichts x.x
|
AW: ADOQuery - SQLQuery ??
![]() |
AW: ADOQuery - SQLQuery ??
könnte es sein, daß da noch ein "commit" fehlt bzw. Autocommit nicht auf true steht?
Gruß K-H |
AW: ADOQuery - SQLQuery ??
Wo finde ich denn Autocommit?
|
AW: ADOQuery - SQLQuery ??
In der Datenbank-Connection.
Bis denne, Poelser |
AW: ADOQuery - SQLQuery ??
Moin...:P
@xReva: Warum hängst du die Screenshots nicht an den Beitrag an? 1. Irgendwann ist das Original verschwunden und der Beitrag ist nicht mehr vollständig. :? 2. Die meisten weigern sich Scripte auf der Internetseite in Übersee (automatisch) auszuführen um nur das Bild zu sehen. :evil: zum Thema: Diesen Teil verstehe ich von der Logik nicht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ADOQuery1.SQL.Clear; // kann weg wenn du SQL.Text verwendest ADOQuery1.SQL.Add('select * from taccounts where susername='''+edit1.Text+''' and suserpass='''+edit2.Text+''' '); // besser Parameter und SQL.Text ADOQuery1.Open; if not ADOQuery1.Eof then // du erwartest nur einen Datensatz, warum die Bedingung auf EOF? begin // nur den Internetexplorer öffnen und nichts damit machen? Das könnte auch ohne Benutzernamen geschehen *grübel* 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz