แนะนำ: การใช้งานการป้อนข้อมูลแบทช์ ASP รายการแบทช์ถูกใช้อย่างกว้างขวางในฐานข้อมูลและมีวิธีการมากมายสำหรับรายการแบทช์ ต่อไปฉันจะพูดคุยเกี่ยวกับวิธีที่ฉันประสบความสำเร็จตามแอปพลิเคชันจริงของฉัน การใช้งานหลักคือแนวคิดของการรวบรวมแบบฟอร์มซึ่งใช้ข้อมูลทั้งหมดในการรวบรวมผ่านลูป เมื่อพิจารณาว่าทุกคนสะดวกสบายฉันจึงรวมเข้ากับหน้าเดียว ด้านล่างคือรหัสเฉพาะ
หลายวิธีในการเรียกขั้นตอนที่เก็บไว้ด้วยพารามิเตอร์
1 นี่เป็นวิธีที่ง่ายที่สุดด้วยพารามิเตอร์อินพุตสองตัวไม่มีค่าส่งคืน:
Set Connection = Server.CreateObject (ADODB.Connection)
Connection.open somedsn
Connection.execute Procname Varvalue1, varvalue2
'ล้างวัตถุทั้งหมดให้เป็นทรัพยากรฟรี
Connection.close
ตั้งค่าการเชื่อมต่อ = ไม่มีอะไร
2 หากคุณต้องการส่งคืนชุด recordset:
Set Connection = Server.CreateObject (ADODB.Connection)
Connection.open somedsn
ตั้งค่า rs = server.createObject (adodb.recordset)
Rs.Open exec procname varvalue1, varvalue2, การเชื่อมต่อ
'ล้างวัตถุทั้งหมดให้เป็นทรัพยากรฟรี
Rs.close
Connection.close
ตั้งค่า rs = ไม่มีอะไร
ตั้งค่าการเชื่อมต่อ = ไม่มีอะไร
3 สองวิธีข้างต้นไม่สามารถมีค่าส่งคืน (ยกเว้น recordSet) หากคุณต้องการได้รับค่าส่งคืนคุณจะต้องใช้วิธีคำสั่ง
ก่อนอื่นมีค่าส่งคืนสองประเภท หนึ่งคือการส่งคืนค่าโดยตรงในขั้นตอนที่เก็บไว้เช่นเดียวกับฟังก์ชั่นของค่าส่งคืน C และ VB; อีกอย่างคือการคืนค่าหลายค่า
ชื่อตัวแปรที่เก็บค่าเหล่านี้จะต้องระบุก่อนในพารามิเตอร์การโทร
ตัวอย่างนี้จะจัดการกับพารามิเตอร์หลายตัวพารามิเตอร์อินพุตพารามิเตอร์เอาท์พุทชุดเร็กคอร์ดส่งคืนและค่าส่งคืนโดยตรง (ทั้งหมดเพียงพอหรือไม่)
ขั้นตอนที่เก็บไว้มีดังนี้:
ใช้ผับ
ไป
- สร้างขั้นตอนที่เก็บไว้
สร้างขั้นตอน sp_pubstest
- กำหนดตัวแปรพารามิเตอร์สามตัวจดบันทึกตัวที่สามเครื่องหมายพิเศษจะใช้สำหรับเอาต์พุต
@au_lname varchar (20)
@intid int,
@intidout เอาต์พุต int
เช่น
เลือก @intidout = @intid 1
เลือก *
จากผู้เขียน
โดยที่ au_lname ชอบ @au_lname '%'
-ส่งคืนค่าโดยตรง
return @intid 2
โปรแกรม ASP ที่เรียกขั้นตอนที่เก็บไว้มีดังนี้:
< %@ language = vbscript %>
-
Dim CMDSP
หม
dim adcmdspstoredproc
สลัว adparamreturnvalue
Dim adparaminput
Dim adparamoutput
อดิเรกสลัว
หรอก
หม
หม
Dim Advarchar
'ค่าเหล่านี้เป็นค่าคงที่ที่กำหนดไว้ล่วงหน้าใน VB และสามารถเรียกได้โดยตรง แต่ไม่ได้กำหนดไว้ล่วงหน้าใน VBScript
ADCMDSPSTOREDPROC = 4
adparamreturnValue = 4
adparaminput = 1
adparamoutput = 2
Adinteger = 3
advarchar = 200
IVAL = 5
รูปไข่ = 3
'สร้างวัตถุคำสั่ง
ตั้งค่า cmdsp = server.createObject (adodb.command)
'สร้างลิงค์
cmdsp.activeConnection = driver = {sql server}; server = (local); uid = sa; pwd =; database = pubs
'กำหนดชื่อการเรียกวัตถุคำสั่ง
cmdsp.commandtext = sp_pubstest
'ตั้งค่าประเภทคำสั่งการเรียกตามขั้นตอนที่เก็บไว้ (ADCMDSPSTOREDPROC = 4)
CMDSP.CommandType = ADCMDSPSTORDPROC
'เพิ่มพารามิเตอร์ลงในวัตถุคำสั่ง
'กำหนดขั้นตอนที่เก็บไว้มีค่าส่งคืนโดยตรงและเป็นจำนวนเต็มค่าเริ่มต้นคือ 4
cmdsp.parameters.append cmdsp.createparameter (return_value, adinteger, adparamreturnvalue, 4)
'กำหนดพารามิเตอร์อินพุตอักขระ
cmdsp.parameters.append cmdsp.createparameter (@au_lname, advarchar, adparaminput, 20, m)
'กำหนดพารามิเตอร์อินพุตจำนวนเต็ม
cmdsp.parameters.append cmdsp.createparameter (@intid, adinteger, adparaminput ,, ival)
'กำหนดพารามิเตอร์เอาต์พุตจำนวนเต็ม
cmdsp.parameters.append cmdsp.createparameter (@intidout, adinteger, adparamoutput, รูปไข่)
'เรียกใช้โพรซีเดอร์ที่เก็บไว้และรับชุดเรคคอร์ดส่งคืน
ตั้งค่า adors = cmdsp.execute
'พิมพ์แต่ละระเบียนซึ่งเป็นฟิลด์ที่เป็นเสมือนคุณสามารถเพิกเฉยได้
ในขณะที่ไม่ใช่ adors.eof
สำหรับแต่ละ adofield ใน adors.fields
Response.write adofield.name & = & adofield.value & <br> & vbcrlf
ต่อไป
Response.write <br>
Adors.movenext
ใช้
'พิมพ์ค่าเอาต์พุตสองค่า:
Response.write <p> @intidout = & cmdsp.parameters (@intidout) .Value & </p>
response.write <p> ค่าส่งคืน = & cmdsp.parameters (return_value) .Value & </p>
'ทำความสะอาดครั้งใหญ่
ตั้งค่า adors = ไม่มีอะไร
ตั้งค่า cmdsp.activeConnection = ไม่มีอะไร
ตั้งค่า cmdsp = ไม่มีอะไร
-
มีวิธีอื่น ๆ ซึ่งจะปิดเล็กน้อยและฉันจะพูดถึงมันในภายหลัง
บทความนี้ได้อ้างอิงบทความจำนวนมากและจะไม่ถูกระบุไว้ที่นี่
แบ่งปัน: การส่งแบบฟอร์มที่ จำกัด ซ้ำหลายครั้งใน ASP บนอินเทอร์เน็ตเราพบรูปแบบที่นับไม่ถ้วนทุกวันและเรายังเห็นว่าส่วนใหญ่ไม่ได้ จำกัด ผู้ใช้จากการส่งแบบฟอร์มเดียวกันหลายครั้ง การขาดข้อ จำกัด ดังกล่าวบางครั้งอาจให้ผลลัพธ์ที่ไม่คาดคิดเช่นการสมัครสมาชิกซ้ำไปยังบริการอีเมลหรือการลงคะแนนซ้ำ บทความนี้แนะนำวิธีการง่าย ๆ ในแอปพลิเคชัน ASP เพื่อป้องกันไม่ให้ผู้ใช้ส่งแบบฟอร์มเดียวกันหลายครั้งในระหว่างเซสชันปัจจุบัน