Tertib dan Keutamaan Parameter OleDbCommand
Apabila melaksanakan pertanyaan dengan parameter dalam OleDbCommand, adalah penting untuk memahami susunan dan keutamaan parameter. Walaupun menggunakan parameter bernama, OleDbCommand tidak menyokong parameter bernama untuk pernyataan SQL atau prosedur tersimpan apabila CommandType ditetapkan kepada Teks.
Akibatnya, tanda soal (?) pemegang tempat mesti digunakan dalam pertanyaan. Susunan ruang letak ini muncul dalam pertanyaan sepadan dengan susunan objek OleDbParameter ditambahkan pada OleDbParameterCollection.
Pertimbangkan pertanyaan berikut:
SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Untuk melaksanakan pertanyaan ini dengan betul, parameter mesti ditambah pada OleDbCommand sebagai berikut:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("?dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("?dtFin", OleDbType.Date).Value = dateTraitementFin;
Perhatikan bahawa "@dtDebut" dan "@dtFin" telah digantikan dengan "?dtDebut" dan "?dtFin" masing-masing. Pemegang tempat tanda soal mesti sepadan dengan susunan ia muncul dalam pertanyaan.
Dalam contoh penyahpepijatan yang dinyatakan, parameter telah ditukar apabila menambahkannya pada koleksi. Ini menyebabkan tiada hasil dikembalikan kerana OleDbCommand melaksanakan pertanyaan dengan parameter dalam susunan ia ditambahkan, bukan tertib yang dinyatakan dalam pertanyaan.
Oleh itu, adalah penting untuk memberi perhatian kepada susunan dan keutamaan parameter dalam OleDbCommand apabila menggunakan ruang letak tanda soal. Kegagalan berbuat demikian boleh menyebabkan keputusan atau ralat yang tidak dijangka.
Atas ialah kandungan terperinci Bagaimanakah Susunan Parameter Mempengaruhi Keputusan Pertanyaan dalam OleDbCommand?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!