【QTP专题】连接数据库

  1. 获取数据库连接串

    在本地新建一个.txt文件,修改扩展名名*.udl;双击*.udl文件,打开数据库链接属性,定位到"提供程序"选显卡,选中sqlserver的连接  Microsoft  for OLE DB Provider for sql server,点击下一步;输入数据源,数据库用户名以及密码,选择数据库,点击测试连接,测试成功后,点击"确定"。如图所示

    然后用UE或记事本打开*.udl文件,sqlserver的连接串已经生成了,如下:

Provider=SQLOLEDB.1;Password=trsadmin;Persist Security Info=True;User ID=sa;Initial Catalog=test;Data Source=192.***.***.***

  

  2.连接数据库

Dim objConnection Connection对象实例 
Dim strConnString 连接字符串 
strConnString="Provider=SQLOLEDB.1;Password=trsadmin;Persist Security Info=True;User ID=sa;Initial Catalog=test;Data Source=192.***.***.***"

Set objConnection = CreateObject("ADODB.CONNECTION")  建立Connection对象的实例 
objConnection.Open strConnString  用Open方法建立与数据库连接
objConnection.state=0 ‘表示数据库连接失败

  

  3.关闭数据库连接

    objRecordSet.Close 
    objConnection.Close 
    Set objRecordSet = Nothing 
    Set objConnection = Nothing

 

 

  4.执行查询 

Dim objRecordSet RecordSet对象实例
Dim sqlStr sql查询语句

Set objRecordSet = CreateObject("ADODB.Recordset") 建立Recordset对象的实例
objRecordSet.Open sqlStr,objConnection 执行查询

If (objRecordSet.BOF or objRecordSet.EOF) Then  查询不存在任何记录
  executeSQL = NULL 返回NULL
Else 存在查询记录
  使用 GetRows 方法将记录从 Recordset 复制到二维数组中。第一个下标标识字段,第二个则标识记录号。
  executeSQL = objRecordSet.GetRows() 返回查询结果的二维数组
End If

 

 

以下代码将数据库各个常用功能封装成函数,已测试通过,仅供参考:

Option Explicit
公共对象
Dim objConnection    Connection对象实例 
Dim strConnString    连接字符串 
Dim objRecordSet    RecordSet对象实例  


================================================================== 函数功能:连接到数据库 参数说明:        1.strDBType(数据库类型:支持SQL SERVER、ORACEL、MYSQL、DB2、SYBASE)         2.strDBName(数据库名)         3.strUID(用户名)         4.strPWD(密码)         5.strIP(服务器名或IP地址)  返回结果:无  调用方法:ConnectDB(strDBType, strDBName, strUID, strPWD) ==================================================================
Sub connectDB(strDBType, strDBName, strUID, strPWD,strIP) 
    Select Case UCase(Trim(strDBType)) 不同的数据库类型连接数据库的字符串不同
         Case "SQL SERVER" 
            strConnString="Provider=SQLOLEDB; Data Source="& strIP &"; Initial Catalog="& strDBName &"; User ID="& strUID &"; Password="&strPWD        
        Case "ORACLE" 
            strConnString="Provider=OraOLEDB.Oracle; Data Source="& strDBName &"; User ID="& strUID &"; Password="& strPWD  
        Case "MYSQL" 
            strConnString="Driver={MySQL ODBC 5.1 Driver}; Server="& strIP &"; Database="& strDBName &"; User="&strUID&"; Password="& strPWD 
       Case Else 
            Reporter.ReportEvent micFail,"数据库类型错误" ,"目前支持的数据库类型有:SQL SERVER、ORACEL、MYSQL、DB2、SYBASE" 
    End Select 
    Set objConnection = CreateObject("ADODB.CONNECTION")  建立Connection对象的实例 
    objConnection.Open strConnString  用Open方法建立与数据库连接 
End Sub 


================================================================== 函数功能:关闭数据库连接 参数说明:无  返回结果:无  调用方法:closeDB() ==================================================================
Sub closeDB() 
    objRecordSet.Close 
    objConnection.Close 
    Set objRecordSet = Nothing 
    Set objConnection = Nothing 
End Sub 

================================================================== 函数功能:执行SQL语句 参数说明:sqlStr(SQL语句 ) 返回结果:返回一个存放查询结果的二维数组 调用方法:results = executeSQL(sqlStr)==================================================================
Function executeSQL (sqlStr)
    Call connectDB(gDBType,gDBName,gUID,gPWD,gIP) 连接到数据库,函数的实参在配置文件中定义
    Set objRecordSet = CreateObject("ADODB.Recordset") 建立Recordset对象的实例 
    objRecordSet.Open sqlStr,objConnection
    If (objRecordSet.BOF or objRecordSet.EOF) Then  查询不存在任何记录
        Reporter.ReportEvent micDone,"查询不存在任何记录","数据库中查询不存在任何记录!"
        executeSQL = NULL 返回NULL
    Else 存在查询记录
        使用 GetRows 方法将记录从 Recordset 复制到二维数组中。第一个下标标识字段,第二个则标识记录号。
        executeSQL = objRecordSet.GetRows() 返回查询结果的二维数组
    End If
    Call closeDB() 关闭数据库连接
End Function

 

 

 

 

【QTP专题】连接数据库,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。