一、下面我们就来一步一步的创建组件:

启动vb6.0新建-->ActiveX dll工程。单击"工程"-->引用,选择"microsoft active server pages object library"和"microsoft activeX data objects 2.1 library"两项。将类模块的名称改为WenConnection.将工程的名称改为WenADODB.保存工程文件WenADODB.vbp和类文件WenConnection.cls。具体做法:1)选择“工程”—>“引用”进入引用用户选择界面,在“可用的引用”复选框选择"microsoft active server pages object library"和"microsoft activeX data objects 2.1 library"两项。

2)选择“工程”—>“工程属性”进入工程属性设置界面,选“通用”页,在“工程类型”的下拉框中选择“ActiveX DLL”,在工程名输入框中输入工程名为“WenADODB”。

 

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
strsql="Select * From tableName"
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的强大组件编写功能还可以写出功能更加强大跟齐全的组件,来完成更加实用的任务。

BTW:再次使用VB生成DLL时,如果直接覆盖系统会提示“权限被拒绝”,而在覆盖前运行“net stop w3svc”,覆盖后再运行“net start w3svc”命令就没问题了.