【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“用VB生成DLL封装ASP代码一个例子 连接acce - 技术总结“提供大家参考,希望对大家有所帮助!
用VB生成DLL封装
ASP代码一个例子 连接acce 用VB生成DLL封装
ASP代码一个例子连接access数据库等2010-05-27 0018封装为dll会带来很多的好处主要包括只是产权的保护以及效率和安全性能的提升。
这个例子中被封装的dll文件可以隐藏access数据库的实际路径。
VB生成的DLL封装
ASP代码来连接数据库Access。
本文用一个最简单的连接access数据库的例子来说明如何将
asp代码封装为dll文件。
我们用vb最常见的方式来封装
asp代码。
我们需要封装的对象如下Proconn.
asp dim ProConn set ProConnServer.CreateObjectADODB.CONNECTIONProConn.OpendriverMicrosoft Access Driver.mdbuidpwd123DBQServer.MapPathDB.
asp我们将下面的部分封装driverMicrosoft Access Driver.mdbuidpwd123DBQServer.MapPathDB.
asp分析一下这段要封装的内容它的前半部分就是一个字符串driverMicrosoft Access Driver.mdbuidpwd123DBQ用连接上后半部分的另一个字符串。
后半部分的另一个字符串是Server.MapPath对象函数的返回值。
下面开始这个封装的操作过程。
首先新建一个VB下的ActiveX DLL工程工程的名称Project1更改成ConDBDLL方法class1的名称更改成cs工程名和方法名会在调用这个DLL的时候使用到大家可以按照自己命名规则定义但请注意好好使用。
这个DLL的代码部分书写如下Dim rp As Response Dim rq As Request Dim ap As Application Dim sr As Server Dim sn As Session Public Sub OnStartPageMyScriptingContext As ScriptingContextSet rpMyScriptingContext.Response Set rqMyScriptingContext.Request Set srMyScriptingContext.Server Set apMyScriptingContext.Application Set snMyScriptingContext.Session End Sub Public Sub OnEndPageSet rpNothing Set rqNothing Set srNothing Set apNothing Set snNothing End Sub以上语句是必须的将原本的对象作了简化处理并在两个基本函数中作了处理Public Function ConnectDBAs Variant ConnectDBdriverMicrosoft Access Driver.mdbuidpwd123DBQEnd Function上面这个函数是处理前半部分字符串的直接返回这个字符串的内容另外定义下面这个函数来处理后半部分内容Public Function DBPathAs Variant DBPathsr.MapPathDB.aspEnd Function注意上面使用的是sr不要使用成Server了到了关键的一步给这个工程添加Microsoft Active Server Pages ObjectContext Object Library的Reference添加方法选择菜单中的Project-Reference在打开的对话框里选择。
对了还要选择上microsoft activeX data objects 2.6 library进行完以上操作我们就可以编译生成DLL了别忘了前面的改工程名和方法名准备好数据库文件DB.
asp由DB.mdb更改后缀而成密码123下面就是调用封装的连接数据库的
asp文件代码由于是自己创建的DLL把它拷贝到相应的目录后必须注册才能使用。
注册的方法在运行中执行Regsvr32.exe dllname.dll取消这个DLL的注册的方法是Regsvr32.exe/u dllname.dll注册完毕我们的工作基本上就做完了现在我们可以使用这样的封装方法连接具有针对性的数据库了。
不过有一点需要特别注意的是由于Dim ConDB set ConDBServer.CreateObjectConDBDLL.ConnConDB就是创建的DLL对象这是在
ASP中创建的对象包括ProConn那么我们在任何使用到引用ProConn.
asp的其他
ASP文件中记得释放这两个对象ProConn.close set ProConnnothing set ConDBNothing否则系统会由于对象没有释放而变得越来越不堪重负。
关于这个封装
ASP代码连接Access数据库的方法我想完全适用其他数据库的连接方法。
再例如下面的封装的例子首先要申明变量Private WenScriptingContext As ScriptingContext Private WenApplication As Application Private WenRequest As Request Private WenResponse As Response Private WenServer As Server Private WenSession As Session为了在WenConnection类中使用
ASP的内建对象必须在此类中写一个OnStartPage子函数。
那是因为无论什么时候用户访问一个带有本组件的
ASP文件IIS就会把ScriptingContext传送给我们的对象请我们使用。
这个ScriptingContext包括了全部的
ASP方法和属性这使得我们有能力访问所有
ASP的对象。
Public Sub OnStartPagePassedScriptingContext As ScriptingContextSet WenScriptingContextPassedScriptingContext Set WenApplicationWenScriptingContext.Application Set WenRequestWenScriptingContext.Request Set WenResponseWenScriptingContext.Response Set WenServerWenScriptingContext.Server Set WenSessionWenScriptingContext.Session End Sub我们既然用OnStartPage函数来创建对象那么我们这里就用OnEndPage子函数来释放对象Public Sub OnEndPageSet WenScriptingContextNothing Set WenApplicationNothing Set WenRequestNothing Set WenResponseNothing Set WenServerNothing Set WenSessionNothing End Sub接下来定义两个函数RsResult和DataSourcePublic Function Rsstrsql As StringAs Recordset Dim oConn As Connection Dim oRs As Recordset Dim strconnstring As String strconnstringdriversql serverserverServerNameuidsapwd_databaseDataBaseNameoConn.Open strconnstring oRs.ActiveConnectionoConn strsqlSelectFrom tableNameoRs.Open strsqloConn13 Set RsoRs End Function Public Function DataSourceConnectionAs Variant DataSourceConnectiondriversql serverserverServerNameuidsapwddatabaseDataBaseNameEnd 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 ConnServer.CreateObjectWenADODB.WenConnection调用组件创建对象实例objConnConn.DataSourceConnectionapplicationstrconnobjConn set RsServer.CreateObjectADODB.Recordsetsqlselectfrom TableName order by ID DESCRs.open sqlapplicationstrconn13Table aligncenterborder1if Rs.Bof and Rs.Eof then Response.Write暂时还没有任何数据。
else Do while not Rs.Eoftr width100td width50RsField1/td td width50RsField2/td/trRs.MoveNext Loop end if Rs.CloseSet RsNothing/Table五、小结我们这里只是编写了一个连接数据库的简单的动态连接库文件利用VB的强大组件编写功能还可以写出功能更加强大跟齐全的组件来完成更加实用的任务关键字如何把
ASP编写成DLL这篇文章主要是把
ASP代码变成组件开发者不仅是加快了
ASP的速度而且也能保护自己的代码.下面我们会来编写一个非常简单的组件重点是知道怎样开发DLL组件而不是其复杂的代码这些都要靠你们自己以后的努力了.服务器端组件首先服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输依靠HTML来起作用.而且只能在IE上有用.但是服务器端的组件是运行在服务器端它在服务器上执行各种操作.因此所有的浏览器都能享用它依靠的是服务器而不是浏览器.当IIS被请求执行一个
ASP程序它首先会在
ASP文件中找到〈标签之间的代码并且执行它也可以是〈scriptrunatserver〈/script之间的代码.如果这个
ASP程序在先前被调用过那么它就会用内存中的编译过的程序来向用户返回HTML代码如果没有那么它就重新编译.这里
ASP就比CGI多一点速度优势因为CGI是每一个请求都使用一个线程.这样就大大消耗了服务器的资源.想不想你写的程序自己就能在IIS运行现在你就行了使用VB5当然现在是VB6了你就能建立DynamicLinkedLibrariesDLL文件它能在IIS上直接运行如果有
asp文件来请求的话.系统和软件的要求你需要一个32位的操作系统来运行
ASP.当然你也得安装IIS或PWS.我们下面的程序是在windows95PWSVB5的环境下开发的.我们开始吧启动你的VB选择ActiveX图标.这个图标可以在新建工程找到VB会提供一个默认的工程名project1和类名class1.我们会将这两个名字都改掉.在改名之前请首先确认我们拥有MicrosoftActiveServerPagesObjectLibrary它在我们的程序非常有用.从菜单中选择工程然后在其中选择引用就会出现引用窗口从中选择MicrosoftActiveServerPagesObjectLibrary.给工程和类命名现在我们来根据自己的爱好来为project1和class1来命名吧给它们命名也是很重要的我们以后会用这个工程名和类名来创建这个组件的实例后面详细介绍.如何改名我就不想多说了我们的工程名改为Exmaple类名为Helloword怎样使用工程和类现在我们有了我们自己的工程Example1和类名HelloWorld.以后我们就会在
ASP代码中使用它们的名字来引用这个组件.在
ASP中我们就这样引用如下SetObjReferenceServer.CreateObjectProjectName.ClassName对于我们工程的引用就是SetObjReferenceServer.CreateObjectExample1.HelloWorld现在我们就能用ObjReference来调用我们在组件中所创建的函数子程序.下面我们会来写一个SayHello的子程序我们执行它的代码如下〈SetObjReferenceServer.CreateObjectExample1.HelloWorldObjReference.SayHello为了在Helloword类中使用
ASP的方法你必须在此类中写一个OnStartPage子函数.如下PublicSubOnStartPagePassedScriptingContextAsScriptingContextSetMyScriptingContextPassedScriptingContext EndSub现在无论什么时候用户访问一个带有本组件的
ASP文件IIS就会把ScriptingContext传送给我们的对象请我们使用.这个ScriptingContext包括了全部的
ASP方法和属性.实现上这使得我们有能力访问所有
ASP的对象.看下面的代码PublicSubOnStartPagePassedScriptingContextAsScriptingContextSetMyScriptingContextPassedScriptingContext SetMyApplicationMyScriptingContext.Application SetMyRequestMyScriptingContext.Request SetMyResponseMyScriptingContext.Response SetMyServerMyScriptingContext.Server SetMySessionMyScripti ngContext.Session EndSub以后我们就能用在VB中用MyApplication来代替
ASP中的Application同理可以代替RequestServer.不过我们来是要在OnStartPage之前来申明这些变量PrivateMyScriptingContextAsScriptingContext PrivateMyApplicationAsApplication PrivateMyRequestAsRequest PrivateMyResponseAsResponse PrivateMyServerAsServer PrivateMySessionAsSession使用
ASP的对象我们的变量现在就能像标准的
ASP对象来使用了比如我们经常在
ASP中用Request.form来收集提交表单的数据.现在我们在我们的VB中实现这个功能代码如下用
ASP中实现〈MyTempVariableRequest.FormuserNameResponse.WriteyouenteredMyTempVariableasyourusername在VB中实现MyTempVariableMyRequest.FormuserNameMyResponse.WriteyouenteredMyTempVariableasyourusername通过使用MyResponse来代替Response我们能够使用所有Response的方法当然MyResponse这个名字可以随便来取你甚至可以就取Response.另一件我们得注意的是我们得在我们的建立的类中写上OnEndPage子函数这个OnStartPage是相反的OnStartPage是创建对象OnEndPage是消毁对象.PublicSubOnEndPageSetMyScriptingContextNothing SetMyApplicationNothing SetMyRequestNothing SetMyResponseNothing SetMyServerNothing SetMySessionNothing EndSub SayHello方法我们来建立一个子函数用于显示HolleWorld.这个SayHello方法只是HelloWorld这个类中一个子函数我们以后会在
ASP中用以下的显示这个方法〈SetObjReferenceServer.CreateObjectExample1.HelloWorldObjReference.SayHelloSayHello的程序很简单的PublicSubSayHelloMyResponse.WriteHelloWorldEndSub现在一个小型的组件编写完成剩下的工作就是编译这个组件在工程菜单中保存它取什么名字都可以我们用Exmaple1.vbp吧然后就用在菜单中选择makeexmaple1.dll将其编译成DLL文件.一个组件就真正完成了注意编译了此组件那么你就得先把你的PWS关掉然后再编译此组件.否则VB就会告诉你些组件在使用中.在
ASP中使用我们的自己的组件.当你更正了在编译中的错误成功地编译了example1这个工程现在你就得拿出你最喜欢的HTML编辑器来写下下面的语句保存为
ASP文件.〈HTML〈HEAD〈TITLE Example1〈/TITLE〈/HEAD〈BODY〈SetObjReferenceServer.CreateObjectExample1.HelloWorldObjReference.SayHello〈/BODY〈/HTML运行后即可看到结果HelloWorld注册组件如果你想和你的朋友邻居分享你的组件那么你就得在你的系统上注册你的组件.我们一般使用Regsvr32.exe来注册组件.注册后你的组件会出现在Win95/Win98的windows/system目录中.下面是一个注册的例子Regsvr32.exeC/wwwroot/Example1/Example1.dll在你的系统中VB会自动给你注册所以你很少用到Regsvr32.exe这里只是写了一个非常小的组件你可以写好自己的更大的组件而且还可以用VB中的很多控件.附录建立注册DLL和反注册DLL文件的快捷方式有的程序员经常要注册或者反注册自己写的dll文件加一个快捷方式会减少自己的工作量Windows Registry Editor Version 5.00HKEY_CLASSES_ROOTdllfileshellHKEY_CLASSES_ROOTdllfileshellregisterHKEY_CLASSES_ROOTdllfileshellregistercommandregsvr321HKEY_CLASSES_ROOTdllfileshellUnregisterCommandregsvr321/uHKEY_CLASSES_ROOTdllfileshellUnregistercommandregsvr321/u当我们需要注册或者反注册dll时只要在该dll文件上按下鼠标右键即可附录注册和注销dll文件的方法一个快速注册DLL及OCX的方法有时候我们在VB中要引用某一个DLL或OCX时会出现文件未注册的讯息这时我们可以使用人工注册的方法也就是直接在命令列中使用regsvr32.exe来做做法如下文件注册CWindowsSystemRegsvr32.exe CWindowsSystemTest.ocx取消注册CWindowsSystemRegsvr32.exe/u CWindowsSystemTest.ocx这些动作我们也可以直接写到程序中使用Shell来执行但是我现在要说的都不是上面提到的方法1、在资源管理器中找到CWindowsSystemRegsvr32.exe并【复制】按鼠标右键选复制2、将目录移到CWindowsSendTo后执行【贴上快捷方式】按鼠标右键选贴上快捷方式3、将快捷方式名称改成【REGISTER】4、OK现在如果您想替某一个文件做注册动作例如CWindowsSystemTest.ocx您只要打开资源管理器找到CWindowsSystemTest.ocx按鼠标右键选【传送到】【REGISTER】即可完成注册动作了注有一个地方要注意的是Regsvr32.exe只能注册32位的文件如果要用它来注册16位的文件会有错误讯息产生。
附录某些dll文件的功能一、轻松修复IE浏览器很多经常上网的朋友都有过这样的遭遇IE不能打开新的窗口用鼠标点击超链接也没有任何反应。
这时重装IE一般能解决问题。
其实不必这么麻烦使用Regsvr32命令就可以轻松搞定。
在开始→运行中键入regsvr32 actxprxy.dll命令点击确定按钮这时会弹出一个信息对话框DllRegisterServer in actxprxy.dll succeeded点击确定然后再在开始→运行中键入regsvr32 shdocvw.dll命令单击确定即可。
重新启动后IE已经被轻松修复了。
二、解决Windows无法在线升级的问题Windows的漏洞很多每隔一段时间就需要使用Windows Update升级程序进行在线升级不过Windows Update经常出现无法使用的情况这时我们可以使用Regsvr32来解决这个问题。
在开始→运行中键入regsvr32 wupdinfo.dll点击确定按钮这样在系统中就重新注册了Windows Update组件重新启动后问题已经解决。
三、防范网络脚本病毒有新招网络脚本病毒嵌在网页中上网时在不知不觉中机器就会感染上这种病毒。
笔者认为单纯使用杀毒软件并不能有效地防范这些脚本病毒必须从病毒传播的机理入手。
网络脚本病毒的复制、传播都离不开FSO对象File System Object文件系统对象因此禁用FSO对象就能有效地控制脚本病毒的传播。
操作方法很简单在开始→运行中键入regsvr32/u scrrun.dll就可以禁用FSO对象如果需要使用FSO对象键入regsvr32 scrrun.dll命令即可。
四、卸载Win XP自带的鸡肋功能Win XP以功能强大而著称但有些功能却常常令人有鸡肋之感比如Win XP自带的ZIP功能和图片预览功能不仅占用了系统资源功能也远不如第三方软件强大。
其实用Regsvr32命令可以很容易地卸载这些功能。
在开始→运行中键入regsvr32/u zipfldr.dll单击确定按钮弹出卸载成功信息框后就完成了ZIP功能的卸载要恢复ZIP功能键入regsvr32 zipfldr.dll即可。
同样卸载图片预览功能也很简单在开始→运行中键入regsvr32/u thumbvw.dll即可如果要恢复该功能只须键入regsvr32 thumbvw.dll。
五、让WMP播放器支持RM格式很多朋友喜欢用Windows Media Player以下简称WMP播放器但是它不支持RM格式难道非得安装其它播放软件吗笔者有办法。
以Win XP为例首先下载一个RM格式插件解压缩后得到两个文件夹Release用于Windows 9x和Release Unicode用于Windows 2000/XP将Release Unicode文件夹下的RealMediaSplitter.ax文件拷贝到系统盘符WINDOWSSystem32目录下在开始→运行中键入regsvr32 RealMediaSplitter.ax点击确定即可。
接着下载解码器如Real Alternative安装后就能用WMP播放RM格式的影音文件了。
附录注册和反注册dll文件的批处理dll.bat--Regsvr32.exe AdminDLL.dll un.bat---Regsvr32.exe/u AdminDLL.dll 特别声明 1资料来源于互联网版权归属原作者 2资料内容属于网络意见与本账号立场无关 3如有侵权请告知立即删除。