Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil Data dengan Betul daripada Prosedur Tersimpan dalam ASP Klasik?
ASP Klasik dan Prosedur Tersimpan: Pendapatan Data Cekap
Mendapatkan semula data daripada prosedur yang disimpan dalam aplikasi ASP Klasik selalunya memberikan cabaran. Artikel ini menangani masalah biasa di mana pelaksanaan prosedur tersimpan gagal mengisi set rekod, mengakibatkan respons kosong atau salah.
Masalahnya: Set Rekod Kosong
Pembangun kerap menghadapi situasi di mana kod ASP Klasik mereka, yang direka untuk mendapatkan semula data daripada prosedur yang disimpan, mengembalikan set rekod kosong. Arahan pangkalan data kelihatan betul, namun data yang dijangka kekal tidak boleh diakses.
Contoh dan Analisis Kod
Mari kita periksa coretan kod biasa yang menggambarkan isu ini:
<code class="language-asp">Set conn = Server.CreateObject("ADODB.Connection") conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;" Set objCommandSec = CreateObject("ADODB.Command") With objCommandSec Set .ActiveConnection = Conn .CommandType = 4 .CommandText = "usp_Targets_DataEntry_Display" .Parameters.Append .CreateParameter("@userinumber ", 200, 1, 10, inumber) .Parameters.Append .CreateParameter("@group ", 200, 1, 50, "ISM") .Parameters.Append .CreateParameter("@groupvalue", 200, 1, 50, ismID) .Parameters.Append .CreateParameter("@targettypeparam ", 200, 1, 50, targetType) End With set rs = Server.CreateObject("ADODB.RecordSet") rs = objCommandSec.Execute while not rs.eof response.write (1) response.write (rs("1_Q1")) rs.MoveNext wend response.write (2)</code>
Penyelesaian: Pengendalian Set Rekod yang Betul
Masalah utama terletak pada baris ini:
<code class="language-asp">rs = objCommandSec.Execute</code>
Tugasan yang salah ini menghalang pengambilan data yang betul. Pendekatan yang diperbetulkan ialah:
<code class="language-asp">set rs = Server.CreateObject("ADODB.RecordSet") rs.open objCommandSec</code>
Dengan menggunakan rs.open objCommandSec
, kami membuka set rekod dengan betul menggunakan objek arahan, membolehkan pengambilan data.
Amalan Terbaik untuk Interaksi Prosedur Tersimpan
Berikut ialah beberapa amalan yang disyorkan untuk meningkatkan kecekapan dan kebolehpercayaan kod ASP Klasik anda yang berinteraksi dengan prosedur tersimpan:
Sambungan Terus dalam Perintah: Daripada membuat dan membuka ADODB.Connection
yang berasingan, tetapkan rentetan sambungan secara langsung kepada sifat .ActiveConnection
bagi objek ADODB.Command
. Ini memudahkan kod dan meningkatkan prestasi.
TETAPKAN NOKAUN PADA: Untuk prosedur tersimpan yang melaksanakan operasi INSERT atau UPDATE, masukkan SET NOCOUNT ON
dalam kod SQL anda. Ini menghalang prosedur tersimpan daripada mengembalikan kiraan baris yang terjejas, yang boleh membawa kepada set rekod tertutup sebelum waktunya.
Pertimbangkan Tatasusunan untuk Kesederhanaan: Untuk pengendalian data yang lebih mudah, pertimbangkan untuk menggunakan tatasusunan dan bukannya ADODB.Recordset
untuk lelaran melalui keputusan. Ini selalunya boleh membawa kepada kod yang lebih cekap dan boleh dibaca.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Data dengan Betul daripada Prosedur Tersimpan dalam ASP Klasik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!