Untuk pengguna ASP, semakin sederhana pengoperasian database, semakin banyak waktu yang mereka miliki untuk mempertimbangkan logika dan kode aplikasi, dan efisiensinya akan semakin tinggi.
Hari ini saya di sini untuk memberi Anda gambaran tentang pengoperasian basis data. Kode-kode ini terus-menerus diselesaikan dan dimodifikasi dalam aplikasi ASP jangka panjang saya masalah dalam menggunakannya secara langsung. Tentu saja kemampuan saya terbatas, jadi saya harap semua bisa mendiskusikannya bersama.
Catatan: Kode-kode pada postingan ini semuanya adalah versi VBScript. Selain itu, sebaiknya Anda sudah memiliki dasar tertentu dalam ASP tulisan tangan.
Pertama, izinkan saya memperkenalkan secara singkat beberapa fitur kelas saya:
Beberapa database dengan tipe berbeda dapat dioperasikan secara bersamaan.
Tidak perlu mempertimbangkan perbedaan tipe data sama sekali, dan tidak perlu memikirkan apakah akan menambahkan tanda kutip tunggal ke bidang karakter.
Panggilannya sangat sederhana, dan operasi utama pada database umumnya hanya memerlukan satu baris kode.
Mendukung pengembalian transaksi mssql.
Pernyataan SQL dapat dibuat dan dikeluarkan secara otomatis untuk memfasilitasi proses debug.
Cara menggunakan:
1. Ubah baris pertama dalam file clsDbctrl.asp ke lokasi database Anda sendiri (lihat deskripsi fungsi CreatConn di bawah untuk metode modifikasi). Jika Anda perlu terhubung ke beberapa database, Anda dapat menambahkannya sendiri, dengan format yang sama.
2. Sertakan file asp ini di file asp baru Anda. menyukai:
<!--#include file="Inc/clsDbctrl.asp" --> Atau:
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Gunakan kode berikut untuk menerapkan kelas ini:
Koneksi basis data:
<%
OpenConn() 'Buka koneksi basis data
Redupkan db: Setel db = DbCtrl Baru 'Buat objek
'Kode Anda Di Sini...
Co(db): CloseConn() 'Lepaskan objek dan tutup koneksi database
%>
Atau (satu atau lebih koneksi database):
<%
Redupkan db1 : Setel db1 = DbCtrl Baru : db1.dbConn = Oc(a)
Redupkan db2: Setel db2 = DbCtrl Baru: db2.dbConn = Oc(b)
'Kode Anda Di Sini...
Co(db1): Co(db2)
%>
4. Untuk contoh operasi spesifik, lihat contoh kode di setiap deskripsi fungsi.
Ikhtisar metode dan properti (penggunaan detail dan contohnya ada di bawah):
Mengutip:
CreateConn menghasilkan string koneksi database
Oc membuat koneksi database
Co melepaskan objek
OpenConn membuka koneksi database default
CloseConn menutup koneksi database default
Properti dbCtrl.dbConn, memperoleh koneksi database untuk dioperasikan, nilai defaultnya adalah Conn
Properti dbCtrl.dbErr, hanya baca, menampilkan pesan kesalahan yang diambil
Properti dbCtrl.Version, read-only, informasi versi program
Metode dbCtrl.AutoId, secara otomatis mendapatkan nomor seri unik
metode dbCtrl.GetRecord untuk mendapatkan kumpulan catatan yang memenuhi ketentuan
Metode dbCtrl.GetRecordBySql, memperoleh kumpulan catatan berdasarkan pernyataan sql
Metode dbCtrl.GetRecordDetail, berdasarkan data rinci dari catatan tertentu
metode dbCtrl.AddRecord, tambahkan catatan baru
Metode dbCtrl.UpdateRecord, memperbarui catatan sesuai dengan kondisi yang ditentukan
Metode dbCtrl.DeleteRecord, menghapus record yang memenuhi ketentuan
Metode dbCtrl.ReadTable memperoleh konten bidang lain dalam catatan berdasarkan kondisi yang ditentukan.
metode dbCtrl.C, tutup objek kumpulan catatan
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord Keempat metode ini adalah pernyataan sql yang memperoleh operasi terkait (didahului dengan w)
Konvensi parameter:
Karena ASP tidak memiliki objek Argumen dan tidak dapat menggunakan parameter dinamis, dalam kode kelas ini, Array digunakan untuk mencapai efek ini. Beberapa parameter di kelas ini dapat menggunakan array (seperti yang tercantum dalam deskripsi parameter), namun format berikut harus diikuti saat menggunakan array:
Array("Bidang1:Nilai1", "Bidang2:Benar", "Bidang3:100")
Ya, ini mirip dengan format json. Jika variabel terlibat, maka seperti ini:
Array("Bidang1:" & Nilai1, "Bidang2:" & Nilai2, "Bidang3:" & Nilai3)
Dapat dikatakan bahwa hampir semua konten yang berhubungan dengan field database di kelas ini dapat menggunakan format array di atas untuk mengatur kondisi atau memperoleh konten. Fitur terbesar di sini adalah Anda tidak perlu mempertimbangkan jenis bidang saat menggunakannya. Cukup ikuti bidang dengan titik dua dan kemudian nilai yang sesuai. Jika Anda sering menulis program ASP dengan tangan, Anda akan segera merasakan pesona menggunakan metode ini Selain tipe datanya, juga sangat nyaman untuk menambah dan menghapus kondisi kapan saja. Tidak masalah jika Anda belum memahami cara menggunakannya, ada banyak contoh di bawah ini untuk menggambarkan masalah ini.
Sebenarnya tidak sulit untuk merangkum operasi database ASP. Saya yakin Anda pernah membuat kode serupa sebelumnya atau meminjam kode enkapsulasi orang lain. Tapi seperti yang diketahui semua orang, begitu kesalahan terjadi menggunakan kode yang dienkapsulasi, proses debug adalah masalah yang merepotkan. Secara umum, semakin sederhana operasi yang dienkapsulasi, semakin rumit proses debugnya. Saat saya menulis kode ini, saya mencoba sebaik mungkin untuk mempertimbangkan cara memecahkan masalah kesalahan jika terjadi kesalahan. Sambil menyederhanakan kode bagi pengguna untuk mengoperasikan database sebanyak mungkin, saya dapat mengeluarkan pernyataan SQL kapan saja untuk memecahkan masalah kesalahan.
Terakhir, perlu dicatat bahwa operasi database ASP yang terlibat dalam artikel ini tidak cocok untuk data besar. Seperti yang Anda ketahui, lebih baik menggunakan prosedur tersimpan untuk mengoperasikan data besar . Juga dikemas. Ada juga masalah efisiensi. Jika Anda ingin mengejar efisiensi tinggi, Anda tetap harus mempertimbangkan COM+ dan seterusnya saat menggunakan ASP. Jadi sekali lagi, kategori ini cocok untuk proyek ASP skala kecil dan menengah.
Oke, berikut detail petunjuk penggunaannya:
satu. Koneksi basis data
Mengingat kebiasaan penggunaan kebanyakan orang, proses publik digunakan untuk koneksi database, jadi setiap orang perlu memodifikasinya dalam kode. Jika Anda sudah membuat koneksi database, cukup beri komentar pada baris ini. Kode ini memiliki empat metode koneksi database bawaan: MSSql, Access, MySQL, dan Oracle. Tentu saja, Anda juga dapat menambahkan atau menghapusnya di kode sumber. Ubah contoh:
Redupkan a : a = CreatConn(0, "TestData", "localhost", "nama pengguna", "kata sandi pengguna")
Redupkan b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")
Untuk menjelaskannya, parameter pertama bisa berupa string. Jika Anda menggunakan Access, Anda bisa memasukkan jalur relatif dan jalur absolut di parameter kedua. Jika Anda memiliki kata sandi, Anda juga bisa memasukkannya di parameter kelima, seperti:
Redupkan c : c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Fungsi terkait:
Prototipe: CreateConn(dbType, strDB, strServer, strUid, strPwd)
Fungsi: Membangun string koneksi database
Nilai kembalian: String
parameter:
dbType: Tipe database koneksi Integer atau String
(0 atau "MSSQL") - Microsoft SQL Server
(1 atau "AKSES") - Akses Microsoft Office
(2 atau "MYSQL") - Server MySQL
(3 atau "ORACLE") - Server Oracle
strDB: Nama database string atau alamat database (Akses dapat menggunakan jalur absolut atau relatif)
strServer: Alamat server database string, biarkan kosong untuk Access.
strUid: Nama pengguna database string, biarkan kosong untuk Access.
strPwd: Kata sandi basis data string
Prototipe: Oc(sambunganStr)
Fungsi: Membuka koneksi database
Nilai kembalian: Objek koneksi database objek
parameter:
connStr: String koneksi database, dihasilkan oleh fungsi CreateConn
Prototipe: Co(obj)
Fungsi: menutup objek
parameter:
obj: Objek Nama objek yang akan ditutup
Prototipe: OpenConn
Fungsi: Membuka koneksi database default dan secara otomatis membuat objek koneksi bernama Conn.
Parameter: Tidak ada
Prototipe: CloseConn
Fungsi: Menutup objek koneksi database default bernama Conn
Parameter: Tidak ada
2. Operasi basis data
Berikut ini adalah deskripsi fungsi kelas operasi database ini. Ini harus dianggap sebagai manual.
Prototipe: dbCtrl.dbConn(objConn)
Fungsi: Mendapatkan objek koneksi database
parameter:
objConn: Objek Objek koneksi database yang telah dibuat
Contoh:
Redupkan db : Setel db = DbCtrl Baru
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Bersama(db)
Deskripsi: Atribut ini opsional. Jika atribut ini tidak ditentukan, koneksi data default adalah objek koneksi database bernama Conn di halaman.
Prototipe: dbCtrl.AutoID(NamaTabel)
Fungsi: Secara otomatis mendapatkan nomor seri unik (penomoran otomatis)
Nilai kembalian: Integer
parameter:
TableName: String Nama tabel data yang nomor seri uniknya perlu diperoleh
Contoh:
Redupkan ID baru
newId = db.AutoId("Tabel Uji")
Respon.Tulis(Id baru)
Prototipe: dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
Fungsi: Mendapatkan kumpulan rekaman yang memenuhi ketentuan
Nilai yang dikembalikan: Objek kumpulan rekaman objek
parameter:
TableName : Nama tabel string
FieldsList: Nama kolom string, dipisahkan dengan koma, biarkan kosong untuk menampilkan semua kolom
Kondisi: Kondisi kueri string atau array. Jika berupa array, harus mengikuti konvensi parameter sebelumnya.
orderField: Metode penyortiran string
ShowN: Integer mendapatkan jumlah record, setara dengan Select Top N di SQL
Contoh:
Redup
Setel rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' Dan IsActive = 1","fName Asc", 0)
Meskipun Bukan rs.eof
Response.Write ("Nama adalah:" & rs(1) & "Usia adalah:" & rs(2) & "<br />")
rs.movenext()
Pergi ke
db.C(rs)
Untuk contoh di atas, menentukan kondisi dalam format array berikut adalah setara:
Setel rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
Selain itu, Anda dapat menggunakan pernyataan berikut untuk melihat pernyataan sql yang dihasilkan oleh fungsi ini:
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0))
Seperti yang Anda lihat, tambahkan saja w sebelum fungsi aslinya.
Prototipe: dbCtrl.GetRecordBySQL(strSelect)
Fungsi: Dapatkan kumpulan catatan berdasarkan pernyataan sql
Nilai yang dikembalikan: Objek kumpulan rekaman objek
parameter:
strSelect: Pernyataan string SQL yang digunakan untuk menghasilkan kumpulan data
Contoh:
Redup
Setel rs = db.GetRecordBySQL("Pilih a.Id, a.LastName, b.Group Dari Pengguna a InnerJoin Berangkat b Pada a.GroupId = b.GroupId")
'Kode Anda Di Sini...
db.C(rs)
Prototipe: dbCtrl.GetRecordDetail(NamaTabel, Kondisi)
Fungsi: Berdasarkan data rinci dari catatan tertentu
Nilai yang dikembalikan: Objek kumpulan rekaman objek
parameter:
TableName : Nama tabel string
Kondisi: Kondisi kueri string atau array. Jika berupa array, harus mengikuti konvensi parameter sebelumnya.
Contoh:
Redupkan rs,Id
Id = Permintaan.QueryString("id")
Setel rs = db.GetRecordDetail("TestTable","Id=" & id)
'Kode Anda di sini...
db.C(rs)
Deskripsi: Seperti yang sudah Anda lihat, ini paling sering digunakan untuk membuka halaman detail (seperti halaman konten berita)
Prototipe: dbCtrl.AddRecord(Nama Tabel, Daftar Nilai)
Fungsi : Menambah record baru
Nilai yang dikembalikan: nomor ID dari catatan baru (berhasil) atau 0 (gagal)
parameter:
TableName : Nama tabel string
ValueList: Bidang Array dan nilai yang dimasukkan ke dalam tabel hanya boleh berupa array dan harus mengikuti konvensi parameter sebelumnya
Contoh:
Redupkan fNama, fSex, fWorkYear, fBirth
fNama = "Wang Ertan"
fSex = "laki-laki"
fTahun Kerja = 12
fLahir = Tanggal("1981-10-23")
Hasil redup
hasil = db.AddRecord("TestTable",Array("Nama:"&fName, "Jenis Kelamin:"&fSex, "Tahun Kerja:"&fTahun Kerja, "Ulang Tahun:"&fKelahiran, "IsActive:True"))
Jika hasilnya<>0 Lalu
Response.Write("Tambahkan record berhasil! ID penomoran otomatis dari record ini adalah "& hasil)
Akhiri Jika
Soalnya, Anda sebenarnya tidak perlu mempertimbangkan jenis bidangnya.
Jika Anda ingin melihat field dan nilai pada kode dengan lebih jelas, Anda juga dapat menulisnya seperti ini, tetapi tergantung preferensi Anda:
hasil = db.AddRecord("TestTable",Array("Nama:" & fName,_
"Jenis Kelamin:" & fSex,_
"Tahun Kerja:" & fTahun Kerja,_
"Ulang Tahun:" & fKelahiran,_
"Apakah Aktif: Benar"))
Selain itu, Anda dapat menggunakan pernyataan berikut untuk melihat pernyataan sql yang dihasilkan oleh fungsi ini:
Response.Write(db.wAddRecord("TestTable",Array("Nama:"&fName, "Jenis Kelamin:"&fSex, "Tahun Kerja:"&fTahun Kerja, "Ulang Tahun:"&fKelahiran, "IsActive:True")))
Catatan: Nilai Id yang dikembalikan menggunakan metode yang relatif bodoh, yang tidak menjamin keakuratan ketika jumlah data bersamaan besar.
Prototipe: dbCtrl.UpdateRecord(Nama Tabel, Kondisi, Daftar Nilai)
Fungsi: Memperbarui catatan berdasarkan kondisi yang ditentukan
Nilai kembalian: 1 (berhasil) atau 0 (gagal)
parameter:
TableName : Nama tabel string
Kondisi: Kondisi pembaruan string atau array, jika berupa array, harus mengikuti konvensi parameter sebelumnya
ValueList: String atau Array memperbarui bidang dan nilai. Jika berupa array, ia harus mengikuti konvensi parameter sebelumnya.
Contoh:
Redupkan fNama, fTahun Kerja
fNama = "Wang San Tan"
fTahun Kerja = 10
Hasil redup
hasil = db.UpdateRecord("TestTable", "UId = 1308", Array("Nama:"&fName, "Tahun Kerja:"&fTahun Kerja))
Jika hasilnya<>0 Lalu
Response.Write("Update data berhasil!")
Akhiri Jika
Selain itu, Anda dapat menggunakan pernyataan berikut untuk melihat pernyataan sql yang dihasilkan oleh fungsi ini:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Nama:"&fName, "Tahun Kerja:"&fTahun Kerja)))
Prototipe: dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
Fungsi: Menghapus record yang memenuhi ketentuan
Nilai kembalian: 1 (berhasil) atau 0 (gagal)
parameter:
TableName : Nama tabel string
IDFieldName: String Nama bidang Id pada tabel
IDValues: Kondisi penghapusan string atau Array, yang dapat berupa beberapa nomor ID yang dipisahkan dengan koma.
Contoh:
Redupkan id, hasilnya
ids = Request.Form("selectid") 'Anda dapat berasumsi bahwa nilai yang diperoleh di sini adalah 12, 34, 256, 314 (nilai yang dikirimkan oleh kotak centang adalah seperti ini)
hasil = db.DeleteRecord("TestTable", "UId", id)
Jika hasilnya<>0 Lalu
Response.Write("Berhasil menghapus data!")
Akhiri Jika
Tentu saja, Anda juga dapat menentukan kondisi lain menggunakan string atau array, seperti:
hasil = db.DeleteRecord("TestTable", "UId", "IsActive = 0 Dan NamaDepan = 'Tom'")
Selain itu, Anda dapat menggunakan pernyataan berikut untuk melihat pernyataan sql yang dihasilkan oleh fungsi ini:
Response.Write(db.wDeleteRecord("TestTable", "UId", id))
Prototipe: dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
Fungsi: Mendapatkan isi field lain dalam record berdasarkan kondisi yang ditentukan
Nilai yang dikembalikan: String (GetFieldNames adalah satu bidang) atau Array (GetFieldNames adalah beberapa bidang)
parameter:
TableName : Nama tabel string
Kondisi: Kondisi kueri string atau array. Jika berupa array, harus mengikuti konvensi parameter sebelumnya.
GetFieldNames: String Nama field tunggal atau beberapa nama field dipisahkan dengan koma
Contoh:
Redup, hasilnya
uid = rs("postid") 'Asumsikan ini adalah nilai id pengguna dalam kumpulan catatan di halaman
hasil = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Penerbit:" & hasil)
Saya harus mengatakan bahwa dalam aplikasi sebenarnya, fungsi ini mungkin yang paling banyak digunakan. Apa yang Anda lihat di atas adalah contoh yang sangat umum. Dari satu nilai untuk mendapatkan bidang lain di tabel lain yang nilainya sama dengan nilai tersebut agak sulit untuk diucapkan, tapi itulah artinya). Contoh berikut akan menunjukkan kepada Anda cara mendapatkan beberapa nilai terkait berdasarkan nilai ini.
Redup, hasilnya
uid = rs("postid") 'Asumsikan ini adalah nilai id pengguna dalam kumpulan catatan di halaman
hasil = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("Penerbit:" & hasil(0) & "<br /> Jenis Kelamin: " & hasil(1) & "<br /> Usia: " &hasil(2))
Seperti yang Anda lihat, sesederhana itu. Memasukkan beberapa nama bidang akan menghasilkan sebuah array.
Prototipe: dbCtrl.C(objRs)
Fungsi: Menutup objek kumpulan rekaman
parameter:
objRs: Objek Sebuah objek kumpulan data pada halaman
Contoh:
Redup
Setel rs = db.GetRecordDetail("TestTable","Id=123" )
'Kode Anda di sini...
db.C(rs)
Fungsi ini telah digunakan dalam banyak contoh di atas, jadi saya tidak akan menjelaskannya banyak. Ini setara dengan rs.close: set rs = Nothing.
clsDbctrl.rar