ASP adalah alat yang ampuh untuk menghasilkan halaman web interaktif yang dinamis. Di bawah ini adalah tutorial tentang penggunaan Asp Storage yang telah dibagikan oleh editor dengan Anda. Teman yang tertarik, mari kita pelajari tentang hal itu dengan editor!
1. Lulus parameter menggunakan objek perintah dan objek parameter. Kuliah ini terutama akan menggunakan database Microsoft SQL Server 7.0. Pertama, buat file koneksi adosql7.asp untuk cadangan. Saya tidak akan menentukannya saat digunakan nanti.
%'' Adosql7.asp
OptionExplicit
Response.expires = 0
'' Bagian 1: Membangun Koneksi
Dimcnn, Strcnn
Setcnn = server.CreateObject ("adodb.connection")
Strcnn = "penyedia = sqloledb; userid = SA; kata sandi =; initialcatalog = pubs; dataSource = icbczjp"
Cnn.openstrcnn
%>
Catatan: Saat menggunakannya sendiri, atur DataSource ke nama mesin server database Anda.
Selain itu, saat menggunakan database akses di masa lalu, Microsoft Access97 dapat dengan mudah melihat bidang dan data. Saat menggunakan database SQLServer, terutama saat men -debug skrip ASP pada mesin lain, Anda perlu menginstal alat tambahan untuk melihat bidang dan data. Di sini kami memberi Anda alat: msqry32.exe (microsoftQuery). File ini diinstal dengan Office97 dan umumnya terletak di direktori "Microsoft Office/Office".
Contoh wuf70.asp:
%@Language = "vbscript"%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf70.asp
DIMCMDTEST, PRMTEST, RSTEST
'' Buat objek perintah
SetCmdtest = server.CreateObject ("adodb.command")
'Recordset dan objek perintah dapat dihubungkan ke objek koneksi melalui properti ActiveConnection.
cmdtest.activeConnection = CNN
'' Perintah SQL - berisi dua parameter, ungkapkan dengan?
cmdtest.commandtext = "updateJobssetjob_desc =? WhereJob_id =?"
'' Misalkan jenis perintahnya adalah pernyataan SQL
cmdtest.commandtype = adcmdtext
'' Properti yang disiapkan menentukan apakah akan menyusun perintah SQL terlebih dahulu, atur ke true untuk mempercepat menjalankan
cmdtest.prepared = true
'' Buat objek parameter
SetPrmTest = cmdtest.createParameter ("job_desc", advarchar, adparaminput, 50, "jaringan")
'' Tambahkan data ke parameter pengumpulan data
cmdtest.parameters.appendprmtest
SetPrmTest = cmdtest.createParameter ("job_id", adsmallint, adparaminput ,, "12")
cmdtest.parameters.appendprmtest
'' Jalankan modifikasi - tidak perlu mengembalikan hasilnya, cukup gunakan cmdtest.execute
CMDTEST.EXECUTE
'' Reset parameter untuk dijalankan - Anda dapat memodifikasi bagian data lain
cmdtest.parameters ("job_id") = "1"
cmdtest.parameters ("job_desc") = "tes"
CMDTEST.EXECUTE
'' Reset parameter untuk dijalankan
cmdtest ("job_id") = "14"
cmdtest ("job_desc") = "finansial"
CMDTEST.EXECUTE
Setrstest = cnn.execute ("selectjob_id, job_descfromjobs")
Whilenotrstest.eof
Response.writerstest (0) & rstest (1) & ""
rstest.movenext
Pergi ke
Cnn.close: setPrmtest = tidak ada
SetCmdtest = tidak ada: setCnn = tidak ada
%>
menganalisa:
1. Metode CreateParameter dari objek perintah digunakan untuk membuat objek parameter untuk perintah SQL atau prosedur tersimpan. Ada lima parameter secara total (lima parameter adalah opsional):
Parameter pertama: nama objek parameter;
Parameter kedua: Ada terlalu banyak jenis jenis data objek parameter. Silakan merujuk ke Bantuan ADO, di sini advarchar (nilai string), AdsmallInt (integer yang ditandatangani 2-byte);
Parameter ketiga: Jenis parameter. Dapat berupa: adparaminput (menunjukkan parameter input), adparamoutput (menunjukkan sebagai parameter output), adparamReTurnValue (menunjukkan sebagai nilai pengembalian), adparamunknown (menunjukkan bahwa tipe parameter tidak dapat ditentukan), adparaminPututput (menunjukkan sebagai parameter input/output);
Parameter keempat: Panjang data parameter lebih disukai ditentukan untuk sama dengan panjang bidang yang sesuai dalam database untuk menghindari kesalahan selama penggunaan. Terutama ketika tipe data adalah varchar, jika bilangan bulat atau tipe tanggal, nilainya tidak diperlukan;
Parameter kelima: Nilai awal pengaturan parameter.
2.cmdtest.parameters.append Metode menambahkan objek parameter ke pengumpulan data parameter. Dari contoh ini, Anda juga dapat melihat cara menggunakan beberapa parameter.
3. Dari contoh ini, kita dapat melihat bahwa Anda hanya perlu mengatur ulang parameter input untuk melakukan modifikasi pada data lain, yang sangat nyaman. Gagasan ini juga merupakan salah satu metode yang paling umum digunakan saat pemrograman.
4. Setel ulang parameter, Anda dapat menggunakan cmdtest.parameter atau menghilangkannya ke cmdtest ("job_id").
2. Gunakan prosedur tersimpan di ASP
Apa itu prosedur tersimpan (prosedur tersimpan terletak di server database dan merupakan kumpulan pernyataan SQL yang dapat berisi satu atau lebih pernyataan SQL), dan cara membuat prosedur tersimpan bukan milik konten kuliah ini. Kuliah ini terutama menggambarkan cara memanggil prosedur tersimpan di ASP.
Manfaat menggunakan prosedur tersimpan sangat bagus, yang lebih efisien daripada menjalankan perintah SQL dalam skrip ASP; Mereka dapat meningkatkan kinerja keseluruhan dan mengurangi beban jaringan (mengurangi interaksi antara server jaringan dan server data); Mereka dapat mengoptimalkan kode ASP dan meningkatkan fleksibilitas kode, dan sebagainya.
(I) Gunakan parameter input dalam prosedur tersimpan
Prosedur tersimpan yang digunakan dalam contoh ini adalah "Byroyalty" yang datang dengan SQLServer 7.0. Pernyataan SQL di dalamnya sangat sederhana. Ini tidak lebih dari createProcedureByroyalty tambahan, dan parameter input adalah @percentage:
CreateProcedureBroalyty@persentageint
SEBAGAI
selecau_idfromtitleauthor
wheretitleauthor.royaltypeper=@percentage
serveBywww.cidu.net
Contoh wuf71.asp
%@Bahasa = vbscript%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf71.asp
DIMCMDTEST, PRMTEST, RSTEST
SetCmdtest = server.CreateObject ("adodb.command")
cmdtest.commandtext = "Byroyalty" '' '' 'Nama prosedur yang tersimpan
'' Misalkan jenis perintah adalah prosedur tersimpan
cmdtest.commandtype = adcmdstoredProc
'' Buat objek parameter
SetPrmTest = server.CreateObject ("adodb.parameter")
Atribut Type sesuai dengan parameter kedua di WUF70.asp
prmtest.type = adinteger''4-byte ditandatangani integer
'Properti Direction sesuai dengan parameter ketiga di WUF70.asp
prmtest.direction = adparaminput
Atribut nilai sesuai dengan parameter kelima di wuf70.asp
prmtest.value = 30
cmdtest.parameters.appendprmtest
Setcmdtest.activeConnection = CNN
'Anda perlu mengembalikan set rekaman, jadi gunakan setRstest = cmdtest.execute
SetRstest = cmdtest.execute
Whilenotrstest.eof
Response.writersest (0) & ""
rstest.movenext
Pergi ke
Cnn.close
SetRstest = tidak ada: setPrmTest = tidak ada
SetCmdtest = tidak ada: setCnn = tidak ada
%>
Properti CommandText dapat menentukan perintah SQL, atau sebagai prosedur tersimpan atau nama tabel.
Dalam contoh ini, membuat objek parameter sedikit berbeda dari wuf70.asp. Bahkan, jika Anda melihat lebih dekat, artinya serupa. Ada dua properti yang tidak digunakan dalam contoh ini: prmtest.name, prmtest.size, plus jenis, arah dan nilai, yang sesuai dengan lima parameter di wuf70.asp.
(Ii) Gunakan parameter output
Saat mendapatkan catatan dari tabel basis data atau menghitung nilai, prosedur tersimpan yang mengembalikan parameter output perlu digunakan. Untuk memberikan contoh, pertama -tama buat prosedur baru yang tersimpan outemploy di perpustakaan SQLServer Pubs. Prosedur tersimpan perlu masuk dua tanggal dan kemudian mengeluarkan nilai maksimum.
CreateProcEdureOutEmploy
(
@job_lvltinyIntoutput,
@hire_date1dateTime,
@hire_date2dateTime
)
SEBAGAI
pilih@job_lvl = max (job_lvl) Fromimmoyee
whereHire_date> =@hire_date1andhire_date =@hire_date2
Ada beberapa cara untuk membuat prosedur tersimpan:
1. Gunakan Microsoft Sqlserver's EnterpriseManager, buka di direktori pohon di sebelah kiri dan buka pada gilirannya: Consoleroot -MicrosoftSQLServer - SQLServerGrup -ICBCZJP (Windowsnt) –Databases -Pubs -storedprocedure -newstored -newstored. Setelah memasuki prosedur tersimpan, itu juga dapat terdeteksi secara sintaksis;
2. Gunakan QueryAnalyzer Microsoft SqlServer, pertama -tama terhubung ke server database dan pilih database pub. Masukkan prosedur tersimpan di atas dan klik ExecuteQuery (atau tekan F5);
3. Menggunakan VB6.0, setelah membuka menu "View"/"Data View Window", klik kanan "tautan data"/"tautan data baru";
4. Gunakan skrip ASP untuk membuat prosedur tersimpan, seperti wuf75.asp:
%@Bahasa = vbscript%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf75.asp
DIMSTRSQL
'' Catatan: & Chr (10) & Chr (13) dapat diabaikan, terutama demi tampilan yang baik
Strsql = "CreateProcEdureOutEmploy (@job_lvltinyIntoutput," & chr (10) & chr (13) & _
"@hire_date1dateTime,@hire_date2dateTime) sebagai" & chr (10) & chr (13) & _
"Pilih@job_lvl = maks (job_lvl) Fromimmoyee" & _
"whereHire_date> =@hire_date1andhire_date =@hire_date2"
Cnn.executestrsql
Response.write "Buat prosedur tersimpan dengan sukses"
Cnn.close: setcnn = tidak ada
%>
Setelah prosedur tersimpan dibuat, selain menggunakan menu, Anda juga dapat menghapusnya menggunakan pernyataan SQL "DropProceDureOutEmploy".
Contoh wuf72.asp - Kirim parameter input yang diperlukan ke dalam prosedur tersimpan dan dapatkan hasil output.
%@Bahasa = vbscript%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf72.asp
DIMCMDTEST, PRMTEST
SetCmdtest = server.CreateObject ("adodb.command")
cmdtest.activeConnection = CNN
cmdtest.commandtext = "outemploy" '' nama prosedur yang tersimpan
cmdtest.commandtype = adcmdstoredProc
'' Buat objek parameter
SetPrmTest = cmdtest.createParameter ("job_lvl", adtinyint, adparamoutput)
cmdtest.parameters.appendprmtest
'' AdtinyInt-1 byte yang ditandatangani Integer
'' Nilai AddBdate-Date (YYYYMMDD)
SetPrmtest = cmdtest.createParameter ("hiredate1", addbdate, adparaminput ,, "1993-05-09")
cmdtest.parameters.appendprmtest
SetPrmtest = cmdtest.createParameter ("hiredate2", addbdate, adparaminput, "1994-02-01")
cmdtest.parameters.appendprmtest
CMDTEST.EXECUTE
'Tiga ekspresi berikut ini berarti sama
Response.writecmdtest ("job_lvl") & ""
Response.writecmdtest.parameters ("job_lvl") & ""
Response.writecmdtest.parameters ("job_lvl"). Nilai
Cnn.close
SetPrmtest = tidak ada
SetCmdtest = tidak ada: setCnn = tidak ada
%>
(Iii) Gunakan parameter kode pengembalian
Gunakan pernyataan pengembalian untuk mengembalikan kode pengembalian yang berbeda dari prosedur tersimpan. Misalnya, prosedur tersimpan pertama kali mendapatkan set rekaman, dan kemudian, jika ada karyawan bernama Margaret, ia akan mengembalikan 1, jika tidak ia akan mengembalikan 0.
CreateProcedereTurnEmploy
SEBAGAI
selectemp_id, fnamefrommrommrom
IfExists (SelectFnamefromimmiMiMeWhereFname = '' Margaret '')
Kembali (1)
Kalau tidak
Kembali (0)
Contoh wuf73.asp
%@Bahasa = vbscript%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf73.asp
DIMCMDTEST, PRMTEST, RSTEST
SetCmdtest = server.CreateObject ("adodb.command")
cmdtest.activeConnection = CNN
cmdtest.CommandText = "ReturneMreeMer" '' '' nama prosedur
cmdtest.commandtype = adcmdstoredProc
SetPrmtest = cmdtest.createParameter ("returnValue", adinteger, adparamreturnValue)
cmdtest.parameters.appendprmtest
SetRstest = cmdtest.execute ()
Whilenotrstest.eof
Response.writerstest (0) & "] [" & rstest (1) & ""
rstest.movenext
Pergi ke
rstest.close: setRstest = tidak ada
'' Sebelum mengembalikan cmdtest ("returnValue"), rstest harus ditutup terlebih dahulu, jika tidak hasilnya akan salah
Ifcmdtest ("returnValue") = 1then
Response.write "memiliki karyawan ini"
Kalau tidak
Response.write "Tidak Ada Karyawan"
Endif
Cnn.close
SetPrmtest = tidak ada
SetCmdtest = tidak ada: setCnn = tidak ada
%>
3. Cara menangani data besar
"Data besar" di sini terutama mengacu pada bidang teks (teks besar) dan gambar (gambar). Data tidak dapat diperoleh dengan benar menggunakan metode yang dijelaskan di atas. Anda harus terlebih dahulu menggunakan size = rStest (0) .ActualSize untuk mendapatkan panjang sebenarnya dari nilai bidang, dan kemudian gunakan rStest (0) .getchunk (ukuran) untuk mendapatkan data. Dalam penggunaan aktual, karena bidang -bidang ini relatif besar, untuk menghemat dan menggunakan sumber daya server secara wajar, pembacaan tersegmentasi umumnya diadopsi. Contoh wuf74.asp:
%@Bahasa = vbscript%>
!-#includeFile = "adosql7.asp"->
!-#includeFile = "adovbs.inc"->
%'' wuf74.asp
DIMSTRSQL, rStest
'pr_info adalah bidang teks
Strsql = "selectpr_info, pub_idfrompub_info"
Setrstest = cnn.execute (strsql)
Dimbasicsize, dimulai, ltext
Dowhilenotrstest.eof
Response.writersest (1) & ""
'1024 byte per bacaan
Dasar -dasar = 1024
Dimulai = 0
Whilebeginsizerstest (0) .ActualSize
Ltext = rStest (0) .getchunk (dasar)
Dimulai = dimulai+dasar -dasar
'Output segmen berdasarkan segmen ke klien
Response.writeltext
Pergi ke
Response.write ""
rstest.movenext
Lingkaran
Cnn.close
SetRstest = tidak ada: setCnn = tidak ada
%>
Dalam contoh ini, maksimum 1024 byte dibaca setiap kali dan membacanya dalam beberapa kali. Sebaliknya, jika Anda menulis data besar ke database, metode ini mirip dengan yang di atas, tetapi alih -alih menggunakan metode getchunk, Anda menggunakan metode appendchunk:
rStest (0) .AppendchunklText
Catatan: Akhirnya, saya akan memperkenalkan sedikit tip tentang database SQLServer. Jika Anda telah menemukan situasi ini: Data Cina dalam database ditampilkan dalam kode kacau, tolong jangan panik. Anda hanya perlu pergi ke situs saya untuk mengunduh sqlsrv32.dll menimpa file dengan nama yang sama di bawah "c:/windows/sistem". Sumber masalahnya adalah driver SQLServer, yang biasanya terjadi di Windows 98 versi 2 (nomor versi driver SQLServer adalah 3.70.06.23) atau Windows 2000 atau MDAC2.5 diinstal (nomor versi adalah 3.70.08.20).
Di atas adalah tutorial tentang penggunaan penyimpanan ASP. Saya yakin Anda telah mempelajari semuanya. Untuk konten terkait lebih lanjut, silakan ikuti saluran teknologi Wonew.