vb程序改写方法。

1。经常出现的写法

在VB中实现对数据库的访问,我们可能会通过一个全局函数来实现,例如以下的代码:

Public Function DBSqlOpen(strName As String, strPWD As String, _
                            strIP As String, strDatabase As String) As ADODB.Connection
    'PurPose:   连接SQl数据库
    'Accepts:
    '           strName-------登陆服务器用户名
    '           strPWD--------登陆服务器密码
    '           strIP---------服务器地址
    '           strDatabase---数据库名
    'Return:    连接对象
    Dim madocon As ADODB.Connection       '///
    Set madocon = New ADODB.Connection
    madocon.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" _
    & strName & ";pwd=" & strPWD & ";Initial Catalog=" & strDatabase & ";Data Source=" & strIP & ""
    madocon.Open
    Set DBSqlOpen = madocon
End Function

然后在其它地方要用到Ado连接的时候就通过该函数来返回。比如:
Private Sub Form_Load()
    Set rs = New ADODB.Recordset
    rs.CursorType = adOpenKeyset
    rs.LockType = adLockPessimistic
    rs.ActiveConnection = DBSqlOpen(strLocalName, strLocalPwd, "(local)", strLocalDb)
    ........
End Sub

程序中如果采用这种方式来实现连接数据库,效率非常的低下。你每用到一次DBSqlOpen这个全局函数,全局函数里面声明的 AdoDB.Connection就会Open一次,假如你的程序频繁调用这个全局函数,可想而之程序的效率将会多么的低下。如何避免这种设计方式呢?我 们采用下面的方式。

2.改进的写法

假如我们设计一个类来实现数据库访问就会避免这样的问题。具体代码如下:

Private m_adoConn As New ADODB.Connection
Private m_adoRecordSet As New ADODB.Recordset

Public Function DBInit()
    Set m_adoConn = Nothing
    Set m_adoRecordSet = Nothing
End Function

Public Function DBEnd()
    m_adoRecordSet.Close
    m_adoConn.Close
    Set m_adoRecordSet = Nothing
    Set m_conn = Nothing
End Function

Public Function DBSqlOpen(strName As String, strPWD As String, _
                            strIP As String, strDatabase As String)
    m_adoConn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" _
    & strName & ";pwd=" & strPWD & ";Initial Catalog=" & strDatabase & ";Data Source=" & strIP & ""
    m_adoConn.ConnectionTimeout = 5
    m_adoConn.Open
End Function

Public Function DBGetConn() As ADODB.Connection
    DBGetConn = m_adoConn
End Function

我们在模块里面可以声明一个Public m_DBClass As DBClass来实现对数据库的访问。

Private Sub Command1_Click()
    Dim rs1 As ADODB.Recordset
    rs1.ActiveConnection = m_DBClass.DBGetConn
End Sub

Private Sub Form_Load()
    Dim strName As String
    Dim strPWD As String
    Dim strIP As String
    Dim strDatabase As String
   
    strName = "sa"
    strPWD = ""
    strIP = "192.168.0.37"
    strDatabase = ""
   
    m_DBClass.DBInit
    m_DBClass.DBSqlOpen strName, strPWD, strIP, strDatabase
End Sub

Private Sub Form_Unload(Cancel As Integer)
    m_DBClass.DBEnd
End Sub

每一次要用到数据库连接的时候我们就通过类里面的DBGetConn方法来返回一个ADODB.Connection。


转载于:https://www.cnblogs.com/redfox241/archive/2007/08/06/845362.html

vb群发消息软件源码,本程序是用vb6在clswindow2.1基础上开发的,是对微信客户端进行自动化处理的,完全模拟手工操作,稳定且绝度安全,不会被封。懂代码的可以稍微修改变成定时群发,批量指定目标人群群发。绝对物超所值,代码浅显易懂。 这种非常实用的软件作者选择开源,不像一些同行,摸通了一点技术就藏着掖着,没有共享精神,作者再此完全开源,没有dll没有ocx,clswindow2.1库也是作者精心打造可以用于许多自动化操作方面,非常方便。 各位觉得好麻烦给5分好评。 下面附带一下clswindow2.1更新记录,算是2.1这版本的非正式发布吧。 '============================================================================================== '名 称:windows窗体控制类v2.1 '描 述:一个操作windows窗口的类,可对窗口进行很多常用的操作(类名为clsWindow) '使用范例:Dim window As New clsWindow ' window.GetWindowByTitle("计算器").closeWindow '编 程:sysdzw 原创开发,如果有需要对模块扩充或更新的话请邮箱发我一份,共同维护 '发布日期:2013/06/01 '博 客:http://blog.163.com/sysdzw ' http://blog.csdn.net/sysdzw 'Email :sysdzw@163.com 'QQ :171977759 '版 本:V1.0 初版 2012/12/03 ' V1.1 修正了几个正则相关的函数,调整了部分类结构 2013/05/28 ' V1.2 增加属性Caption,可以获取或设置当前标题栏 2013/05/29 ' V1.3 增加了方法Focus,可以激活当前窗口 2013/06/01 ' 增加了方法Left,Top,Width,Height,Move,处理窗口位置等 ' V1.4 增加了窗口位置调整的几个函数 2013/06/04 ' 增加了得到应用程序路径的函数AppName ' 增加了得到应用程序启动参数的函数AppCommandLine ' V1.5 增加了窗口最大最小化,隐藏显示正常的几个函数 2013/06/06 ' 增加了获取控件相关函数是否使用正则的参数UseRegExp默认F ' V1.6 将Left,Top函数改为属性,可获得可设置 2013/06/10 ' V1.7 增加函数:CloseApp 结束进程 2013/06/13 ' 修正了部分跟正则匹配相关的函数 ' 增加函数:GetElementTextByText ' 增加函数:GetElementHwndByText ' V1.8 增加函数:GetWindowByClassName 2013/06/26 ' 增加函数:GetWindowByClassNameEx ' 增加函数:GetWindowByAppName ' 增加私有变量hWnd_ ' 增加属性hWnd,可设置,单设置时候会检查,非法则设置为0 ' 更新GetWindowByTitleEx函数,使之可以选择性支持正则 ' 删除GetWindowByTitleRegExp函数,合并到上面函数 ' 增加SetFocus函数,调用Focus实现,为了是兼容VB习惯
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值