Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एडीओ क्वेरी (mysql/MyConnector) के साथ पैरामीटर का उपयोग करना

मैं जोड़ने की कोशिश करूंगा SQL.BeginUpdate/SQL.EndUpdate चारों ओर जोड़ता है, अन्यथा हर बार जब आप "जोड़ें" कहते हैं तो SQL पाठ को पार्स किया जाएगा।

यह आम तौर पर एक अच्छा विचार है, क्योंकि ADOQuery.SQL एक TStringList है जिसमें एक ऑनचेंज ईवेंट है जो कमांडटेक्स्ट सेट करता है। SetCommandText टेक्स्ट फिर TADOCommand.AssignCommandText को कॉल करना समाप्त करता है जो उचित मात्रा में काम पार्सिंग पैरा करता है, और CommandObject.CommandText सेट करता है। कभी-कभी ड्राइवर आंशिक SQL कथन के साथ विफल हो जाते हैं, लेकिन यह सामान ठीक दिखता है।

मुझे कई साल पहले भी इसी तरह की समस्या हुई थी - इसलिए मैंने इस सामान के बारे में सीखा!

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 वास्तव में बदसूरत हैं (पवित्र युद्ध शुरू होने दें)

मैं कभी-कभी with . का उपयोग करूंगा , लेकिन कभी भी तीन स्तरों पर घोंसला नहीं बनाएगा! यदि आप हैं, तो कम से कम SQL के साथ का दायरा कम करें ताकि यह पहले Parameters के साथ समाप्त हो जाए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में टाइमज़ोन ऑफ़सेट स्टोर करने के लिए डेटाटाइप/संरचना

  2. MySQL पर NoSQL डेटाबेस का उपयोग करना

  3. MySQL का उपयोग करके विदेशी कुंजी के साथ तालिका में मान कैसे सम्मिलित करें?

  4. MySQL क्वेरी उपनाम अज्ञात कॉलम को कैसे ठीक करें? 2018

  5. डब्ल्यूपीएफ में MySQL के साथ एंटिटी फ्रेमवर्क 5.0 कोड-फर्स्ट