打印本文 关闭窗口 | |
使用组件封装数据库操作 | |
作者:龙卷风.NET 文章来源:csdn.net 点击数 更新时间:2006/4/22 22:42:26 文章录入:admin 责任编辑:admin | |
|
|
其实,大家在书写asp程序时,最担心的可能就是数据库的连接信息,会被一些人看到,进行一些破坏。下面我们用vb6.0来做一个动态链接库(.dll)来隐藏数据库的连接信息。 启动vb6.0,新建-->Active dll工程。单击"工程"-->引用,选择"microsoft active server pages object library" 和"microsoft activeX data objects 2.1 library"两项。将类模块的名称改为dcss.将工程的名称改为yygwy.保存工程文件yygwy.vbp和类文件dcss.cls。 在dcss.cls中写入: 用visual interdev打开global.asa文件.当然了,你也可以在其它文件中使用。 前段日子发表的文章,数据库的连接代码可以直接在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=yang" If Err.Number <> 0 Then GetConn = False Else GetConn = True End If End Function ‘根据输入的雇员ID,得到雇员的名称 Public Function GetEmployeeName(strEmployeeID As Integer) As String
Dim strSql As String Set rs = New ADODB.Recordset strSql = "select LastName+firstname from employees where EmployeeID=" & strEmployeeID
rs.Open strSql, Conn, adOpenStatic, adLockOptimistic
If rs.EOF Then GetEmployeeName = "" Else GetEmployeeName = rs.Fields(0) End If
rs.Close End Function ‘返回所有的雇员列表 Public Function GetEmployeeList() As ADODB.Recordset Dim strSql As String Set rs = New ADODB.Recordset strSql = "select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy" strSql = strSql &",BirthDate,HireDate,Address,City from employees" rs.CursorLocation = adUseClient rs.Open strSql, Conn, adOpenStatic
Set GetEmployeeList = rs 'rs.Close End Function 我们进行测试 新建ASP页面,”TestWebDb1.asp”。主要用来测试GetEmployeeList()方法 <HEAD> <!- 测试页 -> <!- 功能:测试组件 -> <!- 作者:龙卷风.NET at cidu.net-> <% Dim strTopic Dim strTitle Dim strContents Dim DataQuery Dim Rs Dim Myself Myself=Request.ServerVariables("script_name") Set DataQuery=Server.CreateObject("WebDb.GetInfomation") Set Rs=Server.CreateObject("adodb.recordset") %> <TITLE> 数据组件测试页 </TITLE> <H1><CENTER>欢迎使用数据组件(www.ourfly.com)</CENTER></H1> <% Dim Flag Flag=DataQuery.GetConn() If Flag=false then ResPonse.Write "数据库没有连结,请检查" ResPonse.End End if Set Rs=DataQuery.GetEmployeeList() if rs.eof then Response.write "没有数据,请查询" Response.end end if Rs.PageSize =3 Page= CLng(Request.QueryString ("Page")) If Page < 1 Then Page = 1 If Page > Rs.PageCount Then Page = 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>LastName</td>" Response.Write "<td>FirstName</td>" Response.Write "<td>Title</a></td>" Response.Write "<td>TitleOfCourtesy</a></td>" Response.Write "<td>BirthDate</td>" Response.Write "<td>HireDate</td>" Response.Write "<td>Address</td>" Response.Write "<td>City</td>" Response.Write "</tr>" Rs.AbsolutePage = Page For iPage = 1 To Rs.PageSize Response.Write "<TR align=right>" for i=0 to Rs.fields.count-1 Response.Write "<td>"&Rs.fields.item(i)&"</td>" next Response.Write "</TR>" Rs.MoveNext If Rs.EOF Then Exit For next Response.Write "</TABLE></CENTER>" %> <Form name="myform" method="get"> <%If Page <> 1 Then%> <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> <% Rs.close %> 新建ASP页面,”TestWebDb2.asp”。主要用来测试GetEmployeeName()方法 这个页面相对简单一些 <HEAD> <!- 测试页 -> <!- 功能:测试组件 -> <!- 作者:龙卷风.NET -> <% Dim DataQuery Dim strID Dim strResult Set DataQuery=Server.CreateObject("WebDb.GetInfomation") %> <TITLE> 数据组件测试页 </TITLE> <H1><CENTER>欢迎使用数据组件(www.97531.com)</CENTER></H1> <% If Len(Request.QueryString("ID")) > 0 Then strID = Request.QueryString("ID") Dim Flag Flag=DataQuery.GetConn() If Flag=false then ResPonse.Write "数据库没有连结,请检查" ResPonse.End End if
strResult=DataQuery.GetEmployeeName(cint(strID)) if strResult="" then Response.Write "对不起,没有这个编号,请查询" Response.End else ResPonse.Write strResult end if End If %> <FORM NAME="MyForm"> <INPUT TYPE=TEXTBOX NAME="EmpID" SIZE=40><P> <INPUT LANGUAGE="VBScript" TYPE="BUTTON" VALUE="Search" ONCLICK="window.location.href = 'TestWebDb2.asp?ID=' _ + MyForm.EmpID.Value"> </FORM> </HEAD> 一些想法:数据库连结如果放到组件里,如果要修改数据库连结,则要重新编译组件,可能会由此引发一些问题(但是推荐这种,毕竟数据库名和服务器名不会经常改) 如果数据库连结放到ASP页面,可以通过属性传值到组件中,但是安全性会降低。 真是…… 好了,这篇文章结束了,希望对大家有帮助 今后的话题便是如何实现AspToDll这个软件的功能,我们一步一步实现。
|
|
打印本文 关闭窗口 |