MySQL Workbench
 sql >> डेटाबेस >  >> Database Tools >> MySQL Workbench

SQL क्वेरी कार्यक्षेत्र में काम करती है, लेकिन डेल्फी में ठीक उसी क्वेरी के साथ 'वैरिएंट प्रकार को परिवर्तित नहीं कर सका' त्रुटि प्राप्त करें

यहाँ सररुफो की टिप्पणी से सहमत हूँ। "मैं यह कैसे करूँ?" का सही उत्तर है "ऐसा मत करो; यह करने का यह गलत तरीका है।"

यदि आप इस तरह की क्वेरी में सीधे मूल्यों को चिपकाते हैं, तो हैकर अपनी क्वेरी में ऐसी चीज़ें रखने का तरीका ढूंढ सकते हैं जिनकी व्याख्या इस प्रकार की जाती है एसक्यूएल कमांड। इसे SQL इंजेक्शन के रूप में जाना जाता है , और यह पिछले कुछ दशकों में अरबों डॉलर के नुकसान के लिए जिम्मेदार रहा है। (अतिरंजना नहीं।)

इसे करने का सही तरीका यह है कि पैरामीटर, का उपयोग करके अपने SQL कोड को अपने डेटा से स्पष्ट रूप से अलग किया जाए। इस तरह:

ADOQuery1.SQL.Clear;

//: before an identifier specifies a parameter
ADOQuery1.SQL.Add('SELECT tbl.emailAddress, tbljob.Time FROM '+
  'dbwindowwash.tblclient, dbwindowwash.tbljob, dbwindowash.tbljobclientworker '+
  'WHERE tbljobclientworker.jobID = tbljob.jobID AND '+
  'tbljobclientworker.clientID = tblclient.clientID AND tbljob.Date = :date';

//parse the query and find parameter declarations
ADOQuery1.Prepare;

//set a value for the parameter
ADOQuery1.ParamByName['date'].AsDateTime := TodaysDate;

ADOQuery1.Open

किसी पैरामीटर का मान सेट करने का सटीक सिंटैक्स एक डेटासेट प्रकार से दूसरे में भिन्न हो सकता है, लेकिन यह आपको मूल विचार देना चाहिए।



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. MySQL कार्यक्षेत्र> प्लगइन्स> उपयोगिताएँ> SQL क्वेरी को सुधारें

  2. क्या MySQL कार्यक्षेत्र स्वत:पूर्ण कार्य करता है?

  3. RAP/RCP EditorPart पर दिखाए गए X बंद करें बटन को निकालें या अक्षम करें

  4. एक दृश्य की सामग्री प्राप्त करना ग्रहण आरसीपी

  5. MySQL दोहराने योग्य-पढ़ें कार्यक्षेत्र लेनदेन स्तर सेट नहीं है