【QTP专题】连接数据库
- 获取数据库连接串
在本地新建一个.txt文件,修改扩展名名*.udl;双击*.udl文件,打开数据库链接属性,定位到"提供程序"选显卡,选中如sqlserver的连接 Microsoft for OLE DB Provider for sql server,点击下一步;输入数据源,数据库用户名以及密码,选择数据库,点击测试连接,测试成功后,点击"确定"。如图所示
然后用UE或记事本打开*.udl文件,sqlserver的连接串已经生成了,如下:
Provider=SQLOLEDB.;Password=trsadmin;Persist Security Info=True;User ID=sa;Initial Catalog=test;Data Source=.***.***.***
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
=======================================================================================================
SQL执行结果处理:
======================================================================================================
1.检查查询结果记录数
Dim num,sql
sql = "select COUNT(ID) from TableName where .....
results = executeSQL(sql)
num=cint(results(,)) 'cint函数将查询结果转化为Integer类型,num=0表示查询结果为空,num=1表示查询结果有且唯一,num>1表示查询结果有多条
以下为使用案例:
'检查用户是否存在,如果存在则返回true,不存在则返回false
'参数为用户名
Function chkUserExistDB(userName)
Dim sql,results
sql = "select COUNT(USERNAME) from WCMUSER where USERNAME ='"& userName &"'"
results = executeSQL(sql)
If cint(results(,))= Then '存在用户userName
chkUserExistDB = true
Reporter.ReportEvent micDone, "用户存在","系统中存在用户["& userName &"] "
Else '不存在用户userName
chkUserExistDB = false
Reporter.ReportEvent micDone, "用户不存在","系统中不存在用户["& userName &"] "
End If
End Function
【QTP专题】连接数据库的更多相关文章
- 【QTP专题】05_参数化之Excel
QTP使用外部Excel实现参数化主要有以下两种方式 导入到DataTable中 Syntax:DataTable.ImportSheet(FileName, SheetSource, SheetDe ...
- 【QTP专题-优化】VBS脚本启动QTP并运行测试
使用vbs脚本启动QTP并运行测试,startQTP.vbs '******************************************************************** ...
- 【QTP专题】04_对象及操作方法
本节介绍知识点包括 1.QTP自动化的原理 2.两类对象:TO(测试对象).RO(运行对象) 3.操作方法:SetTOProperty,GetROProperty,GetTOProperty 1.QT ...
- 【QTP专题】03_Add-in Manager插件
1.什么是Add-in Manager Add-in Manager,故名思议这是一个QTP插件管理器,每次启动前需要选择对应的插件才能进行测试. 打开QTP之后,我们可以看到有如下的一个Add-in ...
- 【QTP专题】02_时间同步点问题
一.什么是同步点 同步点是指在一个测试过程中,指示QuickTest等待应用程序中某个特定过程运行完成以后再运行下一步操作.Waits until the specified object prope ...
- 【QTP专题】01_安装时报DLL无法注册(转载)
安装QTP过程中报很多DLL注册失败,全部忽略后安装完成,结果打开QTP录制的脚本无法保存,(点击保存按钮没反应) 1.问题分析: 问题a 使用精减版的操作系统 问题b 需要IE 6.0 及以上版本 ...
- QTP连接数据库
'注意:其中DSN=数据源名:UID=用户名:PWD=用户密码 Dim Conn Set Conn=CreateObject("ADODB.Connection") Const C ...
- QTP安装连接Oracle数据库
之前学过一段时间QTP,之后便没用这个笨重的东东,为了以防忘记,再次记录下曾经连接数据库经历了几天才搞好的事情(虽然这个工具可能已经过时,但是国企一般都会使用的) 前提条件: 你已经安装好了QTP / ...
- 我常用的VBS方法(QTP)
这些是4年前在HP用QTP做自动化测试时候总结的一些,现在贴出来,说不准以后会不会用到 当初花了2天时间写的一个自动生成的Excel Report Public Function Report (st ...
随机推荐
- centos7 安装 rabbitmq
主题 因为自己学习项目可能会用到rabbitmq..我又是第一次学习.以前没安装过.所以简单记录下我在centos7环境下安装rabbitmq的过程步骤,下次可以参考. 步骤 1.杂七杂八的东西 安装 ...
- Echart ---超详细介绍
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 在linux下安装并操作tomcat
1.安装tomcat1).下载tomcat从官网http://tomcat.apache.org/下载tomcat,保存在/home目录下.root@ubuntu:/home/ubuntu/Downl ...
- 【LA5135 训练指南】井下矿工 【双连通分量】
题意 有一座地下稀有金属矿由n条隧道和一些连接点组成,其中每条隧道连接两个连接点.任意两个连接点之间最多只有一条隧道.为了降低矿工的危险,你的任务是在一些连接点处安装太平井和相应的逃生装置,使得不管哪 ...
- centOS系统安装MySQL教程
如何卸载CentOS系统自带MySQL 1.1. 查找以前是否装有MySQL 命令:rpm -qa|grep -i mysql 可以看到如下图的所示:(图片来自互联网,仅做参考使用) 说明系统自带: ...
- 在子页面使用layer弹出层时只显示遮罩层,不显示弹出框问题
最近子页面使用layer弹出层时只显示遮罩层,不显示弹出框,这个问题搞了很久,最后才发现,在子页面上使用弹出框时,如果只使用layer.alert()或者layer.open()时,会默认在当前页面弹 ...
- Linux 下启动两个tomcat
Linux 下启动两个tomcat 闲来无事学习nginx,想要配置个load balance.可是先决条件是:得有两个web容器.两个电脑是不用想了.只能想办法在一个机器上启动两个tomcat.原以 ...
- iOS端一次视频全屏需求的实现(转)
对于一个带有视频播放功能的app产品来说,视频全屏是一个基本且重要的需求.虽然这个需求看起来很简单,但是在实现上,我们前后迭代了三套技术方案.这篇文章将介绍这三种实现方案中的利弊和坑点,以及实现过程中 ...
- php实现二分查找法
二分查找法需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 一.要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比. 二.如果 ...
- WebAPI的路由规则
1.自定义路由 public static class WebApiConfig { public static void Register(HttpConfiguration config) { / ...