ในบทความที่ตีพิมพ์เมื่อไม่นานมานี้ รหัสการเชื่อมต่อฐานข้อมูลสามารถแสดงได้โดยตรงในไฟล์ ASP คราวนี้ก็ถูกห่อหุ้มอีกครั้ง
เปิด vb สร้างตัวควบคุม Activex ใหม่ ชื่อโครงการคือ WebDb ชื่อโมดูลคลาสคือ GetInfomation
อ้างอิง "Microsoft Activex Data Object 2.6 Library"
Private Conn As ADODB.Connection
Private Rs As ADODB.Recordset
'ฟังก์ชัน: ตรวจสอบว่าฐานข้อมูลเชื่อมต่ออย่างถูกต้องหรือไม่
' คุณสามารถเปลี่ยนสตริงการเชื่อมต่อ
Public Function GetConn()
Conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source =หยาง"
ถ้า Err.Number <> 0 ดังนั้น
GetConn = False
อื่น
GetConn = True
End ถ้า
End Function
'ตามรหัสพนักงานที่ป้อน รับชื่อพนักงาน
Public Function GetEmployeeName(strEmployeeID As Integer) As String
Dim strSql As String
Set rs = ADODB.Recordset ใหม่
strSql = "เลือกนามสกุล+ชื่อจากพนักงาน โดยที่ EmployeeID=" & strEmployeeID
rs.Open strSql, Conn, adOpenStatic, adLockOptimistic
ถ้า rs.EOF ดังนั้น
GetEmployeeName = ""
อื่น
GetEmployeeName = rs.Fields(0)
สิ้นสุดถ้า
rs.Close
End Function
'ส่งคืนรายชื่อพนักงานทั้งหมดPublic
Function GetEmployeeList() As ADODB.Recordset
Dim strSql As String
Set rs = ADODB.Recordset ใหม่
strSql = "select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate,Address,City from Employee"
rs.CursorLocation = adUseClient
rs.Open strSql, Conn, adOpenStatic
ตั้งค่า GetEmployeeList = rs
'rs.ปิด
ฟังก์ชันสิ้นสุด
เรา
สร้างเพจ ASP ใหม่สำหรับการทดสอบ "TestWebDb1.asp" ส่วนใหญ่ใช้เพื่อทดสอบเมธอด GetEmployeeList()
<HEAD>
<!- หน้าทดสอบ->
<!- ฟังก์ชั่น: ส่วนประกอบทดสอบ->
<!- ผู้แต่ง: Tornado.NET ->
<%
Dim strTopic
Dim strTitle
Dim strContents
Dim DataQuery
Dim Rs
Dim Myself
Myself=Request.ServerVariables("script_name")
ตั้งค่า DataQuery=Server.CreateObject("WebDb.GetInfomation")
ตั้งค่า Rs=Server.CreateObject("adodb.recordset")
%>
<TITLE>
หน้าทดสอบส่วนประกอบข้อมูล
</TITLE>
<H1><CENTER>ยินดีต้อนรับสู่ส่วนประกอบข้อมูล ( www.downcodes.com)</CENTER></H1 >
<%
Dim Flag
Flag=DataQuery.GetConn()
ถ้า Flag=false แล้ว
ResPonse.Write "ไม่มีลิงก์ไปยังฐานข้อมูล โปรดตรวจสอบ"
ResPonse.End
End ถ้า
ตั้งค่า Rs=DataQuery.GetEmployeeList()
ถ้า rs.eof แล้ว
Response.write "ไม่มีข้อมูล โปรดสอบถาม"
Response.end
สิ้นสุดถ้า
Rs.PageSize =3
หน้า= CLng(Request.QueryString ("หน้า"))
ถ้าเพจ < 1 ดังนั้น เพจ = 1
ถ้าเพจ > Rs.PageCount แล้วเพจ = Rs.PageCount
Response.Write "<CENTER><TABLE BORDER=1 cellspacing=0 cellpadding=2>"
Response.Write "<tr BGCOLOR=silver align=center>"
Response.Write "<td>EmployeeID</TD>"
Response.Write "<td>นามสกุล</td>"
ตอบกลับเขียน "<td>ชื่อแรก</td>"
ตอบกลับเขียน "<td>ชื่อเรื่อง</a></td>"
ตอบกลับเขียน "<td>TitleOfCourtesy</ a></td>"
Response.Write "<td>BirthDate</td>"
Response.Write "<td>HireDate</td>"
Response.Write "<td>ที่อยู่</td>"
Response.Write " <td>เมือง</td>"
ตอบกลับเขียน "</tr>"
Rs.AbsolutePage = Page
For iPage = 1 ถึง Rs.PageSize
Response.Write "<TR align=right>"
for i=0 to Rs.fields.count-1
Response.Write "<td>"&Rs.fields.item( i)&"</td>"
การตอบสนองถัดไป
เขียน "</TR>"
Rs.MoveNext
ถ้า Rs.EOF ให้ออกสำหรับ
การตอบกลับถัดไป
เขียน "</TABLE></CENTER>"
%>
<Form name="myform" method="get">
<%If Page <> 1 That%>
<A HREF="<%=Myself%>?Page=1">หน้าแรก</A>
<A HREF = "<%=Myself%>?Page=<%=(Page-1)%>">หน้าก่อนหน้า</A>
<%End If%>
<%If Page <> Rs.PageCount then%>
<A HREF= "<%=Myself%>?Page=<%=(Page+1)%>">หน้าถัดไป</A>
<A HREF="<%=Myself%>?Page=<%=Rs. PageCount%> ">หน้าสุดท้าย</A>
<%End If%>
หน้า:<FONT COLOR="Red"><%=Page%>/<%=Rs.PageCount%></FONT>
< /Form>
<%
฿ปิด
%>
สร้างเพจ ASP ใหม่ "TestWebDb2.asp" ส่วนใหญ่ใช้เพื่อทดสอบเมธอด GetEmployeeName()
หน้านี้ค่อนข้างง่าย
<HEAD>
<!- หน้าทดสอบ->
<!- ฟังก์ชั่น: ส่วนประกอบทดสอบ->
<!- ผู้แต่ง: Tornado.NET ->
<%
Dim DataQuery
Dim strID
Dim strResult
ตั้ง DataQuery=Server.CreateObject("WebDb.GetInfomation")
%>
<ชื่อเรื่อง>
หน้าทดสอบส่วนประกอบข้อมูล
</TITLE>
<H1><CENTER>ยินดีต้อนรับสู่ Data Components ( www.downcodes.com)</CENTER></H1 >
<%
ถ้า Len(Request.QueryString("ID")) > 0 ดังนั้น
strID = Request QueryString("ID")
Dim Flag
Flag=DataQuery.GetConn()
ถ้า Flag=false แล้ว
ResPonse.Write "ไม่มีลิงก์ไปยังฐานข้อมูล โปรดตรวจสอบ"
ResPonse.End
สิ้นสุดถ้า
strResult=DataQuery.GetEmployeeName(cint(strID))
if strResult="" แล้ว
Response.Write "ขออภัย ไม่มีหมายเลขดังกล่าว โปรดสอบถาม"
Response.End
มิฉะนั้น
ResPonse.Write strResult
สิ้นสุดถ้า
End If
%>
<FORM NAME="MyForm">
<INPUT TYPE=TEXTBOX NAME="EmpID" SIZE=40><P>
<INPUT LANGUAGE="VBScript"
TYPE="BUTTON"
VALUE="ค้นหา"
ONCLICK="window.location.href = 'TestWebDb2.asp?ID=' _
+ MyForm.EmpID.Value">
</รูปแบบ>
</HEAD>
แนวคิดบางประการ: หากลิงก์ฐานข้อมูลถูกวางไว้ในส่วนประกอบ หากคุณต้องการแก้ไขลิงก์ฐานข้อมูล คุณจะต้องคอมไพล์ส่วนประกอบใหม่ ซึ่งอาจทำให้เกิดปัญหาบางอย่าง (แต่ขอแนะนำ ท้ายที่สุดคือฐานข้อมูล ชื่อและชื่อเซิร์ฟเวอร์จะไม่เปลี่ยนแปลงบ่อย)
หากลิงก์ฐานข้อมูลถูกวางบนเพจ ASP ค่าสามารถส่งผ่านไปยังส่วนประกอบผ่านแอตทริบิวต์ได้ แต่ความปลอดภัยจะลดลง
จริงๆ แล้ว...
เอาล่ะ บทความนี้จบลงแล้ว ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับทุกคน
หัวข้อถัดไปคือวิธีใช้งานฟังก์ชันของซอฟต์แวร์ AspToDll