Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan parameter dengan ADO Query (mysql/MyConnector)

Saya akan mencoba menambahkan SQL.BeginUpdate/SQL.EndUpdate di sekitar Adds, jika tidak, teks SQL akan diuraikan setiap kali Anda memanggil "Add".

Ini biasanya merupakan ide yang bagus, karena ADOQuery.SQL adalah TStringList yang memiliki event OnChange yang menyetel CommandText. Teks SetCommandText kemudian berakhir dengan memanggil TADOCommand.AssignCommandText yang melakukan cukup banyak parameter parsing kerja, dan menyetel CommandObject.CommandText. Terkadang driver akan gagal dengan pernyataan SQL parsial, tetapi hal ini terlihat OK.

Saya memiliki masalah yang sama bertahun-tahun yang lalu - itulah mengapa saya mempelajari hal ini!

procedure TForm1.login();
var
  Qry : TADOQuery;
begin
  Qry := CreateSQL;
  try
    Qry.SQL.BeginUpdate;

    Qry.SQL.Add('SELECT');
    Qry.SQL.Add('  *');
    Qry.SQL.Add('FROM');
    Qry.SQL.Add('  LisenswebUsers');
    Qry.SQL.Add('WHERE UserName = :MyUsername '); // debugger exception here
    Qry.SQL.Add('  AND UserPassword = :MyPassword '); // debugger exception here

    Qry.SQL.EndUpdate;
    Qry.Parameters.ParamByName('MyUsername').value := txtLogin.text;
    Qry.Parameters.ParamByName('MyPassword').value := strmd5(txtPassword.text);
    Qry.Open;

    if Qry.Recordcount <> 1 then
    begin
      lblLoggedinAs.Text := format('Du er logget inn som: %s (%s)',[FieldByName('Username').AsString,FieldByName('UserEmailaddress').AsString]);
      MainPageControl.ActivePageIndex := 1;
    end
    else
    begin
      txtPassword.Text := '';
      txtPassword.SetFocus;
    end;
  finally
    Qry.Free;
  end;
end;

BTW, with bersarang s benar-benar jelek (biarkan perang suci dimulai)

Saya terkadang menggunakan with , tetapi tidak akan pernah bersarang tiga level! Jika ya, setidaknya kurangi cakupan dengan SQL sehingga diakhiri dengan Parameter.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggabungkan dua tabel mysql?

  2. Laravel:Indeks tidak terdefinisi:driver

  3. Batas Eloquent Laravel dalam Relasi yang memiliki Sub Relasi

  4. TypeORM - Bagaimana cara membuat tabel baru dan menjalankan migrasi secara otomatis dalam mode produksi?

  5. MySQL A atau B tetapi BUKAN keduanya