用VB生成DLL封装ASP代码连接数据库.docx
- 文档编号:27183403
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:19
- 大小:24.46KB
用VB生成DLL封装ASP代码连接数据库.docx
《用VB生成DLL封装ASP代码连接数据库.docx》由会员分享,可在线阅读,更多相关《用VB生成DLL封装ASP代码连接数据库.docx(19页珍藏版)》请在冰豆网上搜索。
用VB生成DLL封装ASP代码连接数据库
用VB生成DLL封装ASP代码,连接数据库。
这篇文章以VB生成的DLL封装ASP代码来连接数据库(以Access数据库为例)。
一般情况下我们在用ASP连接Access的数据库时通常都会进行如下的操作
'//Proconn.asp
<%
dimProConn
setProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")
'一个原本为DB.mdb的Access数据库更改后缀为DB.asp的文件,数据库密码123
iferr.Number<>0then
ResPonse.Write"数据库没有连结,请检查"
ResPonse.End
else
ResPonse.Write"数据库连结成功"
ResPonse.End
endif
%>
如果配置好服务器,访问Proconn.asp,如果连接数据库成功会输出“数据库连结成功”。
但是这样的asp代码的安全级别非常低,如果此asp原代被人看到,那么再有此数据库文件的话,其他人就能轻而易举的
随便打开你的数据库进行操作。
所以我们的任务来了,如何将这些关键的内容封装起来呢?
首先需要确定方式方法和对象。
查看了网上的一些资料,主要都是用VB生成DLL的办法来封装的,那么我们也采取这样的方法好了,(虽然我还没用真正用过VB这东东)
方式方法确定,那么什么是我们需要封装的对象呢?
大家来看
"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")
是最关键的代码,这段代码封装在一个用VB生成的DLL中,应该比较好。
之所以不将整个
dimProConn
setProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")
都封装,(因为网上有讲将整个连接代码都封装)是因为,在其他asp文件引用Proconn.asp时,
我还需要里面的ProConn进行其他操作,如果封装,不便进行引用和操作。
(以上封装对象的解释原因是我个人的见解,有朋友说整体封装对ProConn的使用没有影响,这个我不理解,请知道的给我讲讲)
所在只想封装最关键的部分“"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")”
分析一下这段要封装的内容,
它的前半部分就是一个字符串:
"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="
用&连接上后半部分的另一个字符串。
后半部分的另一个字符串是Server.MapPath对象函数的返回值。
下面开始这个封装的操作过程。
首先
新建一个VB下的ActiveXDLL工程,工程的名称Project1更改成ConDBDLL?
?
方法class1的名称更改成cs
工程名和方法名会在调用这个DLL的时候使用到,大家可以按照自己命名规则定义,但请注意好好使用。
这个DLL的代码部分书写如下:
DimrpAsResponse
DimrqAsRequest
DimapAsApplication
DimsrAsServer
DimsnAsSession
PublicSubOnStartPage(MyScriptingContextAsScriptingContext)
Setrp=MyScriptingContext.Response
Setrq=MyScriptingContext.Request
Setsr=MyScriptingContext.Server
Setap=MyScriptingContext.Application
Setsn=MyScriptingContext.Session
EndSub
PublicSubOnEndPage()
Setrp=Nothing
Setrq=Nothing
Setsr=Nothing
Setap=Nothing
Setsn=Nothing
EndSub
'以上语句是必须的,将原本的对象作了简化处理,并在两个基本函数中作了处理
PublicFunctionConnectDB()AsVariant
ConnectDB="driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="
EndFunction
'上面这个函数是处理前半部分字符串的,直接返回这个字符串的内容
'另外定义下面这个函数来处理后半部分内容
PublicFunctionDBPath()AsVariant
DBPath=sr.MapPath("DB.asp")
EndFunction
'注意上面使用的是sr,不要使用成Server了
到了关键的一步,给这个工程添加"MicrosoftActiveServerPagesObjectContextObjectLibrary"的Reference
添加方法,选择菜单中的"Project"->"Reference",在打开的对话框里选择。
对了,还要选择上"microsoft activeX data objects 2.6 library"
进行完以上操作,我们就可以编译生成DLL了,(别忘了前面的改工程名和方法名)
准备好数据库文件DB.asp(由DB.mdb更改后缀而成,密码123)
下面就是调用封装的连接数据库的asp文件代码:
'//ProConn.asp
<%
dimProConn
setProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
setConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB就是创建的DLL对象
DimStrConn
'定义一个字符串
StrConn=ConDB.ConnectDB()&ConDB.DBPath()
'连接两部分内容组成字符串
ProConn.OpenStrConn
'执行数据库对象操作
%>
由于是自己创建的DLL,把它拷贝到相应的目录后,必须注册才能使用。
注册的方法,在“运行”中执行:
Regsvr32.exelyfUpload.dll
取消这个DLL的注册的方法是:
Regsvr32.exe/ulyfUpload.dll
注册完毕,我们的工作基本上就做完了,现在我们可以使用这样的封装方法连接具有针对性的数据库了。
不过有一点需要特别注意的是:
由于
DimConDB
setConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB就是创建的DLL对象
这是在ASP中创建的对象,包括ProConn,那么我们在任何使用到(引用)ProConn.asp的其他ASP文件中记得释放这两个对象!
ProConn.close
setProConn=nothing
setConDB=Nothing
否则系统会由于对象没有释放,而变得越来越不堪重负。
关于这个封装ASP代码连接Access数据库的方法,我想完全适用其他数据库的连接方法。
我想我的这个方法并不是最好的,有任何不足之处,请看过的人给我指正,在此先行谢过。
用VB生成DLL封装ASP代码一个例子:
连接access数据库等
封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。
这个例子中被封装的dll文件可以隐藏access数据库的实际路径。
VB生成的DLL封装ASP代码来连接数据库(Access)。
本文用一个最简单的连接access数据库的例子来说明如何将asp代码封装为dll文件。
我们用vb,最常见的方式来封装asp代码。
我们需要封装的对象如下:
'Proconn.asp
dimProConn
setProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")
我们将下面的部分封装
"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="&Server.MapPath("DB.asp")
分析一下这段要封装的内容,
它的前半部分就是一个字符串:
"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="
用&连接上后半部分的另一个字符串。
后半部分的另一个字符串是Server.MapPath对象函数的返回值。
下面开始这个封装的操作过程。
首先
新建一个VB下的ActiveXDLL工程,工程的名称Project1更改成ConDBDLL
方法class1的名称更改成cs
工程名和方法名会在调用这个DLL的时候使用到,大家可以按照自己命名规则定义,但请注意好好使用。
这个DLL的代码部分书写如下:
DimrpAsResponse
DimrqAsRequest
DimapAsApplication
DimsrAsServer
DimsnAsSession
PublicSubOnStartPage(MyScriptingContextAsScriptingContext)
Setrp=MyScriptingContext.Response
Setrq=MyScriptingContext.Request
Setsr=MyScriptingContext.Server
Setap=MyScriptingContext.Application
Setsn=MyScriptingContext.Session
EndSub
PublicSubOnEndPage()
Setrp=Nothing
Setrq=Nothing
Setsr=Nothing
Setap=Nothing
Setsn=Nothing
EndSub
'以上语句是必须的,将原本的对象作了简化处理,并在两个基本函数中作了处理
PublicFunctionConnectDB()AsVariant
ConnectDB="driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=123;DBQ="
EndFunction
'上面这个函数是处理前半部分字符串的,直接返回这个字符串的内容
'另外定义下面这个函数来处理后半部分内容
PublicFunctionDBPath()AsVariant
DBPath=sr.MapPath("DB.asp")
EndFunction
'注意上面使用的是sr,不要使用成Server了
到了关键的一步,给这个工程添加"MicrosoftActiveServerPagesObjectContextObjectLibrary"的Reference
添加方法,选择菜单中的"Project"->"Reference",在打开的对话框里选择。
对了,还要选择上"microsoftactiveXdataobjects2.6library"
进行完以上操作,我们就可以编译生成DLL了,(别忘了前面的改工程名和方法名)
准备好数据库文件DB.asp(由DB.mdb更改后缀而成,密码123)
下面就是调用封装的连接数据库的asp文件代码:
由于是自己创建的DLL,把它拷贝到相应的目录后,必须注册才能使用。
注册的方法,在“运行”中执行:
Regsvr32.exedllname.dll
取消这个DLL的注册的方法是:
Regsvr32.exe/udllname.dll
注册完毕,我们的工作基本上就做完了,现在我们可以使用这样的封装方法连接具有针对性的数据库了。
不过有一点需要特别注意的是:
由于
DimConDB
setConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB就是创建的DLL对象
这是在ASP中创建的对象,包括ProConn,那么我们在任何使用到(引用)ProConn.asp的其他ASP文件中记得释放这两个对象!
ProConn.close
setProConn=nothing
setConDB=Nothing
否则系统会由于对象没有释放,而变得越来越不堪重负。
关于这个封装ASP代码连接Access数据库的方法,我想完全适用其他数据库的连接方法。
再例如,下面的封装的例子:
首先要申明变量:
PrivateWenScriptingContext AsScriptingContext
PrivateWenApplication AsApplication
PrivateWenRequest AsRequest
PrivateWenResponse AsResponse
PrivateWenServer AsServer
PrivateWenSession AsSession
为了在WenConnection类中使用ASP的内建对象,必须在此类中写一个OnStartPage子函数。
那是因为无论什么时候用户访问一个带有本组件的ASP文件,IIS就会把ScriptingContext传送给我们的对象请我们使用。
这个ScriptingContext包括了全部的ASP方法和属性,这使得我们有能力访问所有ASP的对象。
PublicSubOnStartPage(PassedScriptingContextAsScriptingContext)
SetWenScriptingContext=PassedScriptingContext
SetWenApplication=WenScriptingContext.Application
SetWenRequest=WenScriptingContext.Request
SetWenResponse=WenScriptingContext.Response
SetWenServer=WenScriptingContext.Server
SetWenSession=WenScriptingContext.Session
EndSub
我们既然用OnStartPage函数来创建对象,那么我们这里就用OnEndPage子函数来释放对象:
PublicSubOnEndPage()
SetWenScriptingContext=Nothing
SetWenApplication=Nothing
SetWenRequest=Nothing
SetWenResponse=Nothing
SetWenServer=Nothing
SetWenSession=Nothing
EndSub
接下来定义两个函数RsResult()和DataSource():
PublicFunctionRs(strsqlAsString)AsRecordset
DimoConn AsConnection
DimoRs AsRecordset
Dimstrconnstring AsString
strconnstring="driver={sqlserver};server=ServerName;uid=sa;pwd=;"&_
"database=DataBaseName"
oConn.Openstrconnstring
oRs.ActiveConnection=oConn
strsql="Select*FromtableName"
oRs.Openstrsql,oConn,1,3
SetRs=oRs
EndFunction
PublicFunctionDataSourceConnection()AsVariant
DataSourceConnection="driver={sqlserver};server=ServerName;uid=sa;pwd=;database=DataBaseName"
EndFunction
三、存工程名为WenADODB.vbp和保存类名为WenConnection.cls,然后点击“文件”—>“生成WenADODB.DLL”编译成动态连接库文件。
VB在编译好动态连接库文件的同时也将该组件注册到注册表里了,要是想在另外一台机器上注册该组件的话,请用以下指令注册或反注册:
Regsvr32x:
\路径\WenADODB.dll x:
\路径\为WenADODB.dll文件存放的盘符和路径
Regsvr32/ux:
\路径\WenADODB.dll 参数U为反注册
四、在ASP文件中调用WenADODB.dll组件的例子。
<%
SetConn=Server.CreateObject("WenADODB.WenConnection")‘调用组件创建对象实例
objConn=Conn.DataSourceConnection()
application("strconn")=objConn
setRs=Server.CreateObject("ADODB.Recordset")
sql="select*fromTableNameorderbyIDDESC"
Rs.opensql,application("strconn"),1,3
%>
<%
ifRs.BofandRs.Eofthen
Response.Write"暂时还没有任何数据。
"
else
DowhilenotRs.Eof
%>
<%
Rs.MoveNext
Loop
endif
Rs.Close;SetRs=Nothing
%>
五、小结
我们这里只是编写了一个连接数据库的简单的动态连接库文件,利用VB的强大组件编写功能还可以写出功能更加强大跟齐全的组件,来完成更加实用的任务
关键字 如何把ASP编写成DLL
这篇文章主要是把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码.
下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!
这些都要靠你们自己以后的努力了.
服务器端组件
首先,服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输,依靠HTML来起作用.而且只能在IE上有用.但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作.因此,所有的浏览器都能享用,它依靠的是服务器而不是浏览器.
当IIS被请求执行一个ASP程序,它首先会在ASP文件中找到〈%%>标签之间的代码,并且执行它(也可以是〈scriptrunat=server>〈/script>之间的代码).如果这个ASP程序在先前被调用过,那么它就会用内存中的编译过的程序来向用户返回HTML代码,如果没有,那么它就重新编译.这里ASP就比CGI多一点速度优势,因为CGI是每一个请求都使用一个线程.这样就大大消耗了服务器的资源.
想不想你写的程序自己就能在IIS运行!
?
!
现在你就行了!
使用VB5(当然现在是VB6了),你就能建立DynamicLinkedLibraries(DLL文件),它能在IIS上直接运行(如果有asp文件来请求的话).
系统和软件的要求
你需要一个32位的操作系统来运行ASP.当然你也得安装IIS或PWS.我们下面的程序是在windows95+PWS+VB5的环境下开发的.
我们开始吧
启动你的VB,选择ActiveX图标.这个图标可以在新建工程找到!
VB会提供一个默认的工程名(project1)和类名(class1).我们会将这两个名字都改掉.在改名之前,请首先确认我们拥有MicrosoftActiveServerPagesObjectLibrary,它在我们的程序非常有用.从菜单中选择"工程",然后在其中选择"引用",就会出现"引用"窗口
从中选择MicrosoftActiveServerPagesObjectLibrary.
给工程和类命名
现在我们来根据自己的爱好来为project1和class1来命名吧!
给它们命名也是很重要的,我们以后会用这个工程名和类名来创建这个组件的实例!
后面详细介绍.
如何改名,我就不想多说了!
我们的工程名改为Exmaple,类名为Helloword
怎样使用工程和类
现在我们有了我们自己的工程(Example1)和类名(HelloWorld).以后我们就会在ASP代码中使用它们的名字来引用这个组件.在ASP中我们就这样引用,如下:
SetObjReference=Server.CreateObject("ProjectName.ClassName")
对于我们工程的引用就是:
SetObjReference=Server.CreateObject("Example1.HelloWorld")
现在我们就能用ObjReference来调用我们在组件中所创建的函数,子程序.下面我们会来写一个SayHello的子程序,我们执行它的代码如下:
〈%
SetObjReference=Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>
为了在Helloword类中使用ASP的方法,你必须在此类中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 生成 DLL 封装 ASP 代码 连接 数据库
![提示](https://static.bdocx.com/images/bang_tan.gif)