Tempahan dan Keutamaan Parameter OleDbCommand: Kes Jangkaan Tidak Sejajar
Apabila membina pertanyaan menggunakan OleDbCommand, adalah penting untuk memastikan susunan parameter dengan tepat mengikuti urutan dalam pernyataan SQL. Salah tanggapan biasa berkisar pada andaian bahawa parameter yang dinamakan menghapuskan keperluan ini. Walau bagaimanapun, seperti yang didedahkan oleh sesi penyahpepijatan yang mendalam, OleDbCommand tidak mempunyai sokongan untuk parameter yang dinamakan apabila CommandType ditetapkan kepada Teks.
Dalam contoh yang diberikan:
SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Parameter ditambahkan dalam susunan berikut:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
Walau bagaimanapun, tiada keputusan dikembalikan, menunjukkan ketidakkonsistenan. Setelah menyusun semula parameter agar sepadan dengan pernyataan SQL, pertanyaan berjaya dilaksanakan:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
Ini sejajar dengan dokumentasi di http://msdn.microsoft.com/en-us/library/system.data. oledb.oledbcommand.parameters.aspx, yang menyatakan dengan jelas bahawa OleDbCommand tidak menyokong parameter bernama untuk pernyataan SQL dalam mod Teks. Sebaliknya, ruang letak tanda soal (?) mesti digunakan dan susunan objek OleDbParameter dalam koleksi mestilah sepadan dengan peletakannya dalam teks arahan.
Atas ialah kandungan terperinci Adakah Perintah Parameter OleDbCommand Penting Apabila CommandType ialah Teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!