Rumah >pembangunan bahagian belakang >C++ >Adakah Pesanan Parameter Penting dalam Pertanyaan OleDbCommand Menggunakan Pemegang Tempat Tanda Soalan?
Dalam percubaan untuk menyahpepijat pertanyaan selama 40 minit, didapati bahawa susunan parameter memainkan peranan yang penting. Pertanyaan yang dimaksudkan adalah seperti berikut:
SELECT * FROM tblSomething WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Walau bagaimanapun, apabila 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;
tiada keputusan dikembalikan. Membalikkan susunan @dtDebut dan @dtFin telah menyelesaikan isu.
Adalah pada mulanya diandaikan bahawa parameter yang dinamakan telah diperkenalkan untuk mengelakkan kebergantungan pesanan tersebut. Walau bagaimanapun, menurut MSDN:
Pembekal OLE DB .NET tidak menyokong parameter yang dinamakan untuk menghantar parameter kepada pernyataan SQL atau prosedur tersimpan yang dipanggil oleh OleDbCommand apabila CommandType ditetapkan kepada Teks. Dalam kes ini, ruang letak tanda soal (?) mesti digunakan.
Oleh itu, adalah penting untuk mengekalkan susunan parameter yang betul apabila menggunakan OleDbCommand dengan parameter yang ditentukan menggunakan pemegang tempat tanda soal.
Atas ialah kandungan terperinci Adakah Pesanan Parameter Penting dalam Pertanyaan OleDbCommand Menggunakan Pemegang Tempat Tanda Soalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!