MySQL Workbench
 sql >> Teknologi Basis Data >  >> Database Tools >> MySQL Workbench

SQL Query berfungsi di Workbench tetapi mendapatkan kesalahan 'Tidak dapat mengonversi tipe varian' dengan kueri yang sama persis di Delphi

Setuju dengan komentar SirRufo di sini. Jawaban yang benar untuk "bagaimana saya melakukannya?" adalah "jangan lakukan itu; itu cara yang salah."

Jika Anda memasukkan nilai langsung ke kueri seperti itu, peretas dapat menemukan cara untuk menempatkan sesuatu ke dalam kueri Anda yang ditafsirkan sebagai Perintah SQL. Ini dikenal sebagai injeksi SQL , dan bertanggung jawab atas kerusakan senilai miliaran dolar dalam beberapa dekade terakhir. (Tidak melebih-lebihkan.)

Cara yang tepat untuk melakukannya adalah dengan memisahkan kode SQL dari data Anda dengan rapi, dengan menggunakan parameter, seperti ini:

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

Sintaks yang tepat untuk cara menyetel nilai parameter mungkin berbeda dari satu tipe set data ke tipe set data lainnya, tetapi itu akan memberi Anda ide dasarnya.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Apakah pelengkapan otomatis MySQL Workbench berfungsi?

  2. Tambahkan batasan pada nilai, Mysql

  3. Membuat batasan UNIK pada beberapa kolom di diagram EER MySQL Workbench

  4. Mendapatkan konten tampilan Eclipse RCP

  5. Mengintegrasikan meja kerja Drool 6 dengan Aplikasi Java