Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara menggunakan variabel string dalam pernyataan sql

Anda bisa melakukan ini

query = "Select * From Table Where Title = " + someone;

Tapi itu buruk dan membuka Anda ke SQL Injection

Anda sebaiknya menggunakan kueri berparameter

Sesuatu seperti ini akan membantu Anda memulai

using (var cn = new SqlClient.SqlConnection(yourConnectionString))
using (var cmd = new SqlClient.SqlCommand())
{
   cn.Open();
   cmd.Connection = cn;
   cmd.CommandType = CommandType.Text;
   cmd.CommandText = "Select * From Table Where Title = @Title";
   cmd.Parameters.Add("@Title", someone);
}

Dari jawaban Jon Skeet karena dia lebih lengkap dari saya

Lihat dokumen untuk SqlCommand.Parameters untuk informasi lebih lanjut.

Pada dasarnya Anda tidak boleh menyematkan nilai Anda di dalam SQL itu sendiri karena berbagai alasan:

  • Tidak baik mencampur kode dan data
  • Ini membuka Anda terhadap SQL injectionattacks kecuali jika Anda sangat berhati-hati untuk melarikan diri
  • Anda harus khawatir tentang pemformatan dan detail i18n untuk hal-hal seperti angka, tanggal, dan waktu, dll.
  • Bila kueri tetap sama dengan hanya perubahan nilai, pengoptimal memiliki lebih sedikit pekerjaan yang harus dilakukan - ia dapat mencari kueri yang dioptimalkan sebelumnya secara langsung karena akan menjadi pencocokan sempurna dalam hal SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan perubahan objek terbaru di Database SQL Server

  2. Perbaiki "Konversi gagal saat mengonversi nilai varchar" Saat Mencoba Menggabungkan di SQL Server

  3. Pilih 10 catatan teratas untuk setiap kategori

  4. Kesalahan:Pernyataan INSERT EXEC tidak dapat disarangkan. dan Tidak dapat menggunakan pernyataan ROLLBACK dalam pernyataan INSERT-EXEC. Bagaimana cara mengatasi ini?

  5. NEWID() vs NEWSEQUENTIALID() di SQL Server:Apa Bedanya?