Kita sudah familiar dengan melakukan operasi database di ASP dengan memanggil prosedur tersimpan SQL Server, tapi tahukah Anda bahwa kita juga bisa membuat dan menggunakan prosedur tersimpan di Access database tingkat desktop?
Access + ASP adalah kombinasi yang sangat baik untuk mengembangkan aplikasi Web ringan: sederhana, cepat, dan kompatibel, namun kinerjanya biasanya tidak tinggi. Selain itu, ada beberapa ketidaknyamanan dalam menggunakan objek ADODB.Connection dan Recordset untuk mengeksekusi pernyataan SQL, karena nilai parameter pernyataan SQL dengan parameter sering disambung menjadi string, sehingga terdapat masalah seperti tanda kutip tunggal. Salah satu manfaat menggunakan prosedur tersimpan adalah mendukung penyediaan tambahan nilai parameter pernyataan SQL.
Faktanya, apa yang disebut prosedur tersimpan di Access (2000 ke atas) tidak dapat dibandingkan dengan Prosedur Tersimpan di SQL Server. Ini hanya dapat dianggap sebagai Stored Procedure Lite, tidak mendukung banyak pernyataan SQL, tidak mendukung pernyataan logis (haha, ini bukan T-SQL), dll. Saya belum tahu apakah ini sudah dikompilasi sebelumnya. Namun, seperti apa yang disebut kelas yang diimplementasikan oleh VBScript hanya dienkapsulasi dan sangat mendorong keindahan struktur kode dan penggunaan kembali program, prosedur tersimpan ringan Access juga akan membantu untuk menstandardisasi dan meminimalkan kemungkinan kesalahan operasi database, dan Kinerja dapat ditingkatkan.
Di bawah ini saya akan menjelaskan langkah demi langkah cara membuat prosedur tersimpan di Access dan kemudian menggunakannya dalam program ASP.
(1) Buat prosedur tersimpan di Access
Saya tidak tahu seberapa baik semua orang menggunakan Access. Bagi saya, ini hanyalah alat untuk membuat file database MDB. Saya hanya membuat file MDB baru, lalu membuat tabel, indeks, batasan, dll. berakhir~
Kueri di Access memainkan peran prosedur tersimpan. Prosedur atau kueri tersimpan Access yang saya sebutkan di bawah semuanya mengacu pada hal ini.
Untuk pembuatan kueri, Access menyediakan alat bodoh, mirip dengan wizard saat membuat DataAdapter di VS.NET. Tapi saya suka menulis kode SQL secara langsung
Lalu klik tombol kueri di sebelah kiri antarmuka Access utama, lalu klik dua kali Buat Kueri dalam Tampilan Desain di sebelah kanan untuk membuka tampilan desain kueri.
Pada saat ini, pembuat kueri visual muncul. Pertama-tama kita menambahkan tabel yang perlu dilibatkan oleh pernyataan SQL.
Setelah menambahkan tabel, klik kanan tampilan desain dan pilih Tampilan SQL untuk beralih ke jendela pengeditan kode SQL.
Oke, mari kita bicara tentang karakteristik prosedur tersimpan Access.
Perasaan saya saat ini adalah bahwa kueri Access adalah pembungkus pernyataan SQL, mungkin dengan beberapa optimasi seperti prakompilasi. Kita tidak dapat menggunakan banyak operasi, transaksi, penilaian logis, loop, dll. seperti menulis prosedur tersimpan SQL Server...
Namun tujuan utama menggunakan prosedur tersimpan Access adalah untuk menggunakan kueri yang disediakan oleh parameter tambahan. Dengan menggunakan prosedur tersimpan, kita tidak lagi harus menghadapi berbagai masalah yang dihadapi saat menggabungkan nilai parameter ke dalam string pernyataan SQL, seperti:
Kode:
Redupkan sql
sql = PILIH * DARI Pengguna DIMANA Nama Pengguna = ' & Nama Pengguna & '
Dalam kode di atas, jika variabel string nama pengguna berisi 'tanda kutip tunggal, kesalahan akan dilaporkan. Kita harus mengonversi secara manual:
Kode:
Redupkan sql
sql = SELECT * FROM Users WHERE UserName = ' & Ganti(userName, ', '') & ' ' diubah menjadi dua tanda kutip tunggal berturut-turut
Menggunakan query dengan parameter, pernyataan SQL kita dapat ditulis sebagai:
Kode:
Redupkan sql
sql = PILIH * DARI Pengguna DI MANA Nama Pengguna = @NamaPengguna
Kemudian masukkan saja nilai parameter @userName menggunakan properti Parameter dari objek Command, yang sangat nyaman dan intuitif.
Kode:
Dengan cmd
'Buat objek parameter
.Parameter.Tambahkan .CreateParameter(@namapengguna)
'Tentukan nilai untuk setiap parameter
.Parameter(@namapengguna) = Namapengguna
Akhiri Dengan
Di sini kami juga menjelaskan penggunaan parameter dalam prosedur tersimpan Access. Tidak seperti prosedur tersimpan SQL Server, yang menggunakan variabel @ untuk menentukan parameter dan kemudian meneruskan objek parameter dengan nama yang sama, parameter di Access diidentifikasi berdasarkan urutan, bukan nama. Tidak perlu menentukan nama untuk parameter yang diteruskan. Anda dapat memberi nama dengan santai. Nama parameter dalam SQL juga dapat diberi nama dengan santai, selama nilai parameter diteruskan, nilai tersebut harus ditentukan dalam urutan di mana parameter muncul dalam pernyataan SQL. Biasanya, kita menggunakan metode Execute pada objek Command dan langsung meneruskan array nilai parameter untuk mengeksekusi ~
Kode:
cmd.Jalankan, Array(Nama Pengguna)
Contoh lainnya, salah satu prosedur tersimpan Access Anda ditulis seperti ini:
Kode:
pilih * dari Pengguna dengan UserName = p_UserName dan BookTitle = p_bookTitle
Anda bisa melakukannya dengan cara ini, dengan meneruskan array nilai parameter, tetapi dalam urutan yang benar:
Kode:
cmd.Jalankan, Array(Nama pengguna, Judul buku)
Oke, mari kita lihat dua query yang digunakan dalam contoh kita, yang pertama adalah menulis data. Setelah menulis pernyataan SQL, simpan dan beri nama.
Kode prosedur tersimpan lainnya yang membaca data.
(2) Menggunakan prosedur tersimpan
Kemudian kita dapat memanggil prosedur tersimpan ini dalam program ASP.
Di sini Anda dapat melihat mengapa saya mengatakan bahwa kueri di Access adalah prosedur tersimpannya - properti CommandType dari objek Command kami disetel ke 4, yaitu Stored Proc!
Jadi...
Kode berikut ini sangat sederhana:
Kode:
<%
Opsi Eksplisit
Redupkan s
Acak
s = Jalan * 100
Sambungan redup, cmd
Setel samb = Server.CreateObject(ADODB.Connection)
Setel cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Sumber Data= & Server.MapPath(sp.mdb)
Dengan cmd
.ActiveConnection = samb
.CommandType = &H0004 'Prosedur tersimpan
.CommandText = TambahkanData Baru
Akhiri Dengan
cmd.Jalankan, Array(CStr(Sekarang()), CSng(s))
Dengan cmd
.ActiveConnection = samb
.CommandType = &H0004 'Prosedur tersimpan
.CommandText = DapatkanData
Akhiri Dengan
Redupkan resultRS, resultArray
Tetapkan hasilRS = cmd.Execute(, Null)
Jika Tidak hasilRS.EOF Lalu
resultArray = hasilRS.GetRows()
Akhiri Jika
Tetapkan hasilRS = Tidak ada
Setel cmd = Tidak Ada
samb.Tutup
Setel samb = Tidak ada
Respon.Tulis <ul>
Redupkan saya
Untuk i = 0 Ke UBound(resultArray, 2)
Respon.Tulis <li> & resultArray(0, i)
Respon.Tulis & resultArray(1, i)
Respon.Tulis & resultArray(2, i)
Respon.Tulis </li>
Berikutnya
Respon.Tulis </ul>
%>