MySQL Workbench
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> MySQL Workbench

Truy vấn SQL hoạt động trong Workbench nhưng gặp lỗi 'Không thể chuyển đổi loại biến thể' với cùng một truy vấn chính xác trong Delphi

Đồng ý với nhận xét của SirRufo tại đây. Câu trả lời chính xác cho "làm thế nào để làm điều này?" là "đừng làm vậy; đó là cách làm sai."

Nếu bạn gắn các giá trị trực tiếp vào truy vấn như vậy, tin tặc có thể tìm cách để đặt những thứ vào truy vấn của bạn mà được hiểu là Các lệnh SQL. Đây được gọi là SQL injection , và nó là nguyên nhân gây ra thiệt hại trị giá hàng tỷ đô la trong vài thập kỷ qua. (Không ngoa.)

Cách thích hợp để làm điều đó là tách mã SQL khỏi dữ liệu của bạn một cách rõ ràng, bằng cách sử dụng tham số, như vậy:

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

Cú pháp chính xác về cách đặt giá trị của một tham số có thể khác với loại tập dữ liệu này sang loại tập dữ liệu khác, nhưng điều đó sẽ cung cấp cho bạn ý tưởng cơ bản.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Cách tích hợp Dự án KIE Workbench 6.1.0.Final (Drools Guvnor) với Ứng dụng Java

  2. MySQL REPEATABLE-READ Workbench cấp giao dịch không được đặt

  3. Máy chủ MySQL Workbench không tương thích / không đạt chuẩn

  4. thông báo bóng trong Wolfram Workbench 2.0

  5. iAd không hiển thị quảng cáo trong trò chơi được chấp thuận của tôi