`
wsql
  • 浏览: 11714011 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

使用VB6编写组件隐藏数据库的连接字符串

阅读更多

使用VB6编写组件隐藏数据库的连接字符串<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

海南省商贸信息服务中心 温大文

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />



如今,开发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"两项。

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 334.5pt; HEIGHT: 246pt" type="#_x0000_t75"><p align="center"><img src="http://www.csdn.net/Develop/ArticleImages/19/19379/CSDN_Dev_Image_2003-7-11657100.png" onload="javascript:if(this.width&gt;screen.width-333)this.width=screen.width-333" o:title="YinYong"></p></shape>

1

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

3)再选择“编译”页,选中“代码大小优化”一项,如图3所示。

<shape id="_x0000_i1027" style="WIDTH: 329.25pt; HEIGHT: 261pt" type="#_x0000_t75"><p align="center"><img src="http://www.csdn.net/Develop/ArticleImages/19/19379/CSDN_Dev_Image_2003-7-11657104.png" onload="javascript:if(this.width&gt;screen.width-333)this.width=screen.width-333" o:title="wenConnetion01"></p></shape>

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

DimoRs 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

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


<!--内容结束//-->
分享到:
评论

相关推荐

    VB网络编程实例

    182.htm 如何映射(中断网络磁盘) ◆ 183.htm 设计E-mail的接收部分 ◆ 184.htm 设置器默认网址 ◆ 185.htm 实现端口对端口的聊天 ◆ 186.htm 使用ASP建立Http组件 ◆ 187.htm 使用VB编写纯...

    vb控件开发 开发ocx

    在文本框中快速增加一串字符 81 , 81.txt 在文本框中实现由加减号输入数据 82 , 82.txt 在运行时维护DBGRID的栏位宽度 83 , 83.txt 怎样使用VB开发基于Sybase的软件 84 , 84.txt 怎样在运行时动态生成多个相同的控件...

    Visual C++ 2005入门经典--源代码及课后练习答案

    4.1.4 字符数组和字符串处理 147 4.1.5 多维数组 150 4.2 间接数据存取 153 4.2.1 指针的概念 153 4.2.2 声明指针 154 4.2.3 使用指针 155 4.2.4 初始化指针 157 4.2.5 sizeof运算符 162 4.2.6 ...

    ACReport中国式报表组件2010(Ver2.2)(含文档)

    八、 屏蔽了设计器中打开模板时如果数据库控件连接字符串无效时报错的信息【脚本】 九、 设计器增加了行号显示功能 十、 增加了SetAppConnectionString方法,数据库连接控件增加了AlwaysUseAppConnString等相关属性...

    ACReport中国式报表控件2010(Ver2.25)

    八、 屏蔽了设计器中打开模板时如果数据库控件连接字符串无效时报错的信息【脚本】 九、 设计器增加了行号显示功能 十、 增加了SetAppConnectionString方法,数据库连接控件增加了AlwaysUseAppConnString等相关属性...

    Visual Basic 2010入门经典.part2.rar

    12.4.1 连接字符串 210 12.4.2 使用基本的字符串函数 211 12.5 使用日期和时间 214 12.5.1 理解Date数据类型 214 12.5.2 增加或减少日期或时间 215 12.5.3 确定两个日期或时间之间的间隔 216 12.5.4 获取日期...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    VBScript介绍手册

    4.1.5 字符串处理函数 4.2 程序范例:Hello 4.2.1 范例介绍 4.2.2 函数介绍——MsgBox函数 4.2.3 程序清单 4.3 程序范例:色彩 4.3.1 范例介绍 4.3.2 代码讲解 4.3.3 函数介绍 4.3.4 程序清单 4.4 程序范例:计数器 ...

    asp.net知识库

    .NET 2.0中的字符串比较 小试ASP.NET 2.0的兼容性 为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1...

    在SQLServer 2005中编写存储过程

    然而,在SQL Server 2005中,我们可以用.NET家族的语言——主要是VB.NET和C#来编写存储过程(以及方法、触发器和其它组件)。让我们来熟悉一下关于编写存储过程新方法的5个常见问题。它们是非常值得我们探讨的。 1、...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    13.4.4 编写使用者应用程序的代码 531 13.5 使用数据协定 533 13.6 名称空间 535 13.6.1 建立主机应用程序 535 13.6.2 建立使用者应用程序 536 13.6.3 查看hellocustomerservice的wsdl和架构 538 13.7 ...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    大家可以看到我们首先是连接数据库然后打开,对于select的命令,我们申明一个OleDbCommand来执行之,然后再申明一个OleDbDataReader,来读取数据,用的是ExecuteReader(),objDataReader.Read()就开始读取了,在输出...

    Java开发技术大全(500个源代码).

    示例描述:本章学习数组与字符串。 ArrayString.java 字符串数组 assignTwoDime.java 为二维数组赋值 getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer的容量增长 SortDemo.java 排序...

    net学习笔记及其他代码应用

    答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的...

    JAVA上百实例源码以及开源项目源代码

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    JAVA上百实例源码以及开源项目

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包---java 源码 大量 实例

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包2

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包3

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

Global site tag (gtag.js) - Google Analytics