打印本文 关闭窗口 | |
使用VB6编写组件隐藏数据库的连接字符串 | |
作者:温大文 文章来源:海南省商贸信息服务中心 点击数 更新时间:2006/4/22 22:28:08 文章录入:admin 责任编辑:admin | |
|
|
如今,开发WEB应用程序绝大多数都是使用Browser/Server模式,而在B/S 应用程序开发领域中,微软公司的IIS/ASP组合以其强大的功能、良好的扩展能力及与其它微软产品良好的兼容性,迅速地流行起来。ASP以其简单易学、功能强大而博得广大程序员的喜爱,国内的大部分网站都是利用ASP架构的。当我们使用ADO访问数据库时,有时是把连接字符串显式的写在.ASP文件中,这样做显然不太安全,很容易被别有用心的人获取密码、数据库名等信息。为了数据的安全,我们可以自己编写组件来封装访问数据库的字符串,然后再在global.asa文件或.asp也面上调用即可。 一、下面我们就来一步一步的创建组件: 启动vb6.0新建-->ActiveX dll工程。单击"工程"-->引用,选择"microsoft active server pages object library"和"microsoft activeX data objects 2.1 library"两项。将类模块的名称改为WenConnection.将工程的名称改为WenADODB.保存工程文件WenADODB.vbp和类文件WenConnection.cls。具体做法:1)选择“工程”—>“引用”进入引用用户选择界面如图1所示,在“可用的引用”复选框选择"microsoft active server pages object library"和"microsoft activeX data objects 2.1 library"两项。 图1 2)选择“工程”—>“工程属性”进入工程属性设置界面,选“通用”页,在“工程类型”的下拉框中选择“ActiveX DLL”,在工程名输入框中输入工程名为“WenADODB”,如图2所示。
3)再选择“编译”页,选中“代码大小优化”一项,如图3所示。 图3 至此,我们对新建的工程的属性、引用等基本设置完成。 二、接下来我们就在类WenConnection.cls中写入代码: 1)首先要申明变量: Private WenScriptingContext As ScriptingContext Private WenApplication As Application Private WenRequest As Request Private WenResponse As Response Private WenServer As Server Private WenSession As Session 2)为了在WenConnection类中使用ASP的内建对象,必须在此类中写一个OnStartPage子函数。那是因为无论什么时候用户访问一个带有本组件的ASP文件,IIS就会把ScriptingContext传送给我们的对象请我们使用。这个ScriptingContext包括了全部的ASP方法和属性,这使得我们有能力访问所有ASP的对象。 Public Sub OnStartPage (PassedScriptingContext As ScriptingContext) Set WenScriptingContext = PassedScriptingContext Set WenApplication = WenScriptingContext.Application Set WenRequest = WenScriptingContext.Request Set WenResponse = WenScriptingContext.Response Set WenServer = WenScriptingContext.Server Set WenSession = WenScriptingContext.Session End Sub 我们既然用OnStartPage函数来创建对象,那么我们这里就用OnEndPage子函数来释放对象: Public Sub OnEndPage() Set WenScriptingContext = Nothing Set WenApplication = Nothing Set WenRequest = Nothing Set WenResponse = Nothing Set WenServer = Nothing Set WenSession = Nothing End Sub 接下来定义两个函数RsResult()和DataSource(): Public Function Rs(strsql As String) As Recordset Dim oConn As Connection Dim oRs As Recordset Dim strconnstring As String strconnstring = "driver={sql server};server=ServerName;uid=sa;pwd=;" & _ "database=DataBaseName" oConn.Open strconnstring oRs.ActiveConnection = oConn oRs.Open strsql, oConn, 1, 3 Set Rs = oRs End Function Public Function DataSourceConnection() As Variant DataSourceConnection = "driver={sql server};server=ServerName;uid=sa;pwd=;database=DataBaseName" End Function 三、 存工程名为WenADODB.vbp和保存类名为WenConnection.cls,然后点击“文件”—>“生成WenADODB.DLL”编译成动态连接库文件。VB在编译好动态连接库文件的同时也将该组件注册到注册表里了,要是想在另外一台机器上注册该组件的话,请用以下指令注册或反注册: Regsvr32 x:\路径\WenADODB.dll x:\路径\为WenADODB.dll文件存放的盘符和路径 Regsvr32 /u x:\路径\WenADODB.dll 参数U为反注册 四、 在ASP文件中调用WenADODB.dll组件的例子。 <% Set Conn=Server.CreateObject("WenADODB.WenConnection") ‘调用组件创建对象实例 objConn=Conn.DataSourceConnection() application("strconn")=objConn set Rs=Server.CreateObject("ADODB.Recordset") sql="select * from TableName order by ID DESC" Rs.open sql,application("strconn"),1,3 %> <Table align="center" border="1"> <% if Rs.Bof and Rs.Eof then Response.Write "暂时还没有任何数据。" else Do while not Rs.Eof %> <tr width=100%> <td width=50%><%=Rs("Field1")%></td><td width=50%><%=Rs("Field2")%></td> </tr> <% Rs.MoveNext Loop end if Rs.Close;Set Rs=Nothing %> </Table> 五、 小结 我们这里只是编写了一个连接数据库的简单的动态连接库文件,利用VB的强大组件编写功能还可以写出功能更加强大跟齐全的组件,来完成更加实用的任务。 |
|
打印本文 关闭窗口 |