Artikel ini menggunakan DLL yang dihasilkan oleh VB untuk merangkum kode ASP untuk menyambung ke database (mengambil database Access sebagai contoh).
Dalam keadaan normal, saat kami menggunakan ASP untuk menyambung ke database Access, kami biasanya melakukan operasi berikut
'//Proconn.asp
<%
redupProConn
setel ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'Database Access yang awalnya DB.mdb diubah menjadi file dengan akhiran DB.asp, dan kata sandi database adalah 123
jika err.Number <> 0 maka
ResPonse.Tulis "Tidak ada link ke database, silakan dicek"
Respon.Akhir
kalau tidak
Response.Tulis "Koneksi database berhasil"
Respon.Akhir
berakhir jika
%>
Jika server dikonfigurasi, akses Proconn.asp. Jika koneksi database berhasil, "Koneksi database berhasil" akan ditampilkan.
Namun tingkat keamanan kode asp tersebut sangat rendah. Jika asp asli dilihat oleh orang lain, maka jika ada file database ini, orang lain dapat dengan mudah membuka database Anda untuk dioperasikan.
Jadi inilah tugas kita, bagaimana merangkum konten-konten utama ini?
Pertama, Anda perlu menentukan metode, metode dan objek.
Setelah memeriksa beberapa informasi di Internet, ini terutama dienkapsulasi dengan menggunakan VB untuk menghasilkan DLL, jadi kita juga harus mengadopsi metode ini, (walaupun saya belum benar-benar menggunakan VB)
metode untuk menentukan, jadi objek apa yang perlu kita enkapsulasi? ?
Datang dan temui semuanya
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Ini adalah kode yang paling penting. Sebaiknya enkapsulasi kode ini dalam DLL yang dibuat dengan VB.
Alasannya kenapa tidak keseluruhan
redupProConn
setel ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Semua dienkapsulasi (karena ada instruksi di Internet untuk merangkum seluruh kode koneksi) karena ketika file asp lain mereferensikan Proconn.asp,
Saya juga memerlukan ProConn di dalamnya untuk melakukan operasi lain. Jika dienkapsulasi, akan merepotkan untuk referensi dan pengoperasian.
(Penjelasan objek enkapsulasi di atas adalah pendapat pribadi saya. Beberapa teman mengatakan bahwa enkapsulasi secara keseluruhan tidak berdampak pada penggunaan ProConn. Saya tidak mengerti. Tolong beri tahu saya jika Anda mengetahuinya)
Saya hanya ingin merangkum bagian paling penting ""driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")"
untuk menganalisis paragraf ini .
Paruh pertama adalah string:
"driver={Driver Microsoft Access (*.mdb)};uid=;pwd=123;DBQ="
Gunakan & untuk menggabungkan paruh kedua string lainnya.
String lainnya di babak kedua adalah nilai kembalian fungsi objek Server.MapPath.
Mari kita mulai proses operasi enkapsulasi.
Pertama, buat proyek ActiveX DLL baru di bawah VB. Ubah nama proyek Project1 menjadi ConDBDLL?? Ubah nama metode class1 menjadi cs
Nama proyek dan nama metode akan digunakan saat memanggil DLL ini. Anda dapat mendefinisikannya sesuai dengan aturan penamaan Anda sendiri, namun harap berhati-hati dalam menggunakannya dengan hati-hati.
Bagian kode DLL ini ditulis sebagai berikut:
Dim rp As Response
Redupkan rq Sesuai Permintaan
Redupkan ap Sebagai Aplikasi
Redupkan sr Sebagai Server
Redupkan layar Sebagai
Sub Sesi Publik DiStartPage(MyScriptingContext Sebagai ScriptingContext)
Setel rp = MyScriptingContext.Response
Setel rq = MyScriptingContext.Request
Setel sr = MyScriptingContext.Server
Setel ap = MyScriptingContext.Application
Setel sn = MyScriptingContext.Session
Akhiri Sub
Publik Sub OnEndPage()
Tetapkan rp = Tidak ada
Tetapkan rq = Tidak ada
Tetapkan sr = Tidak ada
Tetapkan ap=Tidak Ada
Atur sn=Tidak ada
Akhiri Sub
'Pernyataan di atas diperlukan. Objek asli telah disederhanakan dan diproses dalam dua fungsi dasar.
Public Function ConnectDB() As Variant
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
Fungsi Akhir
'Fungsi di atas memproses paruh pertama string dan langsung mengembalikan konten string ini
. ' Selain itu, tentukan fungsi berikut untuk memproses paruh kedua konten
Fungsi Publik DBPath() Sebagai Varian
DBPath = sr.MapPath("DB.asp")
Fungsi Akhir
'Perhatikan bahwa di atas menggunakan sr, jangan gunakan sebagai Server. Sekarang kita
telah mencapai langkah kritis. Tambahkan Referensi "Perpustakaan Objek ObjectContext Halaman Server Aktif Microsoft" ke proyek ini.
Untuk menambahkan metode, pilih "Proyek"->"Referensi" di menu dan pilih di kotak dialog yang terbuka.
Omong-omong, kita juga perlu memilih "perpustakaan objek data microsoft activeX 2.6"
untuk melakukan operasi di atas. Kita dapat mengkompilasi dan menghasilkan DLL (Jangan lupa untuk mengubah nama proyek dan nama metode sebelumnya.)
Siapkan file database DB.asp (ditulis dengan DB .mdb dibentuk dengan mengubah akhiran, passwordnya 123)
Berikut kode untuk memanggil file encapsulated asp yang terhubung ke database:
'//ProConn.asp
<%
redupProConn
setel ProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
atur ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB adalah objek DLL yang dibuat
Dim StrConn
'Definisikan sebuah string
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'Gabungkan kedua bagian untuk membentuk string
ProConn.OpenStrConn
'Lakukan operasi objek database
%>
Karena ini adalah DLL yang Anda buat sendiri, setelah disalin ke direktori yang sesuai, DLL tersebut harus didaftarkan sebelum dapat digunakan.
Metode terdaftar, dijalankan di "Jalankan":
Regsvr32.exe lyfUpload.dll
Metode untuk membatalkan registrasi DLL ini adalah: Regsvr32.exe /u lyfUpload.dll
Setelah registrasi selesai, pekerjaan kita pada dasarnya selesai. Sekarang kita dapat menggunakan metode enkapsulasi untuk terhubung ke target basis data.
Namun ada satu hal yang perlu mendapat perhatian khusus:
Karena
DimConDB
atur ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB adalah objek DLL yang dibuat. Ini adalah objek yang dibuat di ASP, termasuk ProConn. Kemudian kita ingat untuk melepaskan kedua objek ini di file ASP lain yang menggunakan (referensi) ProConn.asp!
ProConn.tutup
setProConn=tidak ada
setConDB=Tidak ada
Jika tidak, sistem akan semakin kewalahan karena objek tidak dilepaskan.
Mengenai metode merangkum kode ASP untuk menyambung ke database Access, menurut saya ini sepenuhnya berlaku untuk metode koneksi database lain.
Menurut saya cara saya kurang baik, jika ada kekurangan mohon dikoreksi jika sudah membacanya. Terima kasih sebelumnya.