Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySqlParameter dưới dạng TableName

Bạn không thể chuyển tên bảng làm tham số. Bạn phải sử dụng SQL động để thực hiện việc này, vì vậy bạn phải tập trung chuỗi để làm điều đó, chẳng hạn như

  MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)

Nhưng vì người dùng nhập tên tableName, do đó có thể đưa vào SQL. Bạn có thể sử dụng SQL này để xác định xem bảng đó có tồn tại hay không trước khi truy vấn bất cứ điều gì từ nó:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';

(Bạn hoàn toàn có thể tham số hóa truy vấn này, vì vậy việc chèn SQL sẽ bị loại bỏ)

Nói chung, hãy cẩn thận với SQL injection. Nhưng nếu bạn sử dụng nội bộ này (không hiển thị với người dùng), thì việc chèn SQL sẽ không thành vấn đề.

Tốt hơn, bạn có thể xây dựng một thủ tục được lưu trữ để giải quyết vấn đề này, như trong một câu trả lời khác của tôi:

Trình thu thập SQL hợp nhất với LINQ




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. khóa chính hỗn hợp (chữ và số) và tự động tăng dần

  2. Làm cách nào để cắt bỏ Trích dẫn hàng đầu và Dẫn đầu từ Hàng MySQL?

  3. Cách thay đổi giá trị mặc định của một cột bằng thủ tục

  4. Dừng cửa sổ dịch vụ MySQL

  5. Cân bằng tải cơ sở dữ liệu trong đám mây - MySQL Master Failover với ProxySQL 2.0:Part One (Deployment)