终于有家了!
QTP通过.NET组件访问多种数据库的方法
上一篇 /
下一篇 2008-09-25 17:43:13
/ 个人分类:QTP
在编辑QTP脚本中经常需要访问数据库或者Excel,针对数据库或者文件的访问,大家最常用的应该是使用ADO的一系列对象,例如获取数据库连接对象:Set connObj = CreateObject("ADODB.Connection");获取记录集获取对象:Set rdsObj = CreateObject("ADODB.Recordset"),获取Excel文件访问对象:Set excelObj = CreateObject("Excel.Application")等等。不知道大家使用过程中有何感受,我感觉最不爽的地方就是读取记录集中的数据,必须要和数据库保持连接状态,并且还要使用循环来读取数据,不能一下子定位到我想要的数据(可能是自己还不太会用吧,抱歉O(∩_∩)O哈哈~)。曾经用C#写过几年的程序,感觉使用ADO.NET的系列对象来访问数据库、操作数据是相当的方便,所以一想到访问数据库和XML格式的数据就想到ADO.NET的数据库访问对象,DataSet、DataTable对数据的访问还是比较方便。最令人兴奋的是QTP可以通过创建数据库访问对象的方式使用ADO.NET,并且操作的方式和流程与在C#下编程思路没有多大区别。废话少说,言归正传。
首先教给大家一个小知识,如何获取各种数据库连接字符串:
新建一个文本文件,把它的扩展名修改成udl,名字可以任意起,如:db.udl,双击该文件按照操作提示即可获取,赶快试一下吧,很不错的。
OK,开始我们的旅行吧!
首先先附上一个通过.NET从SqlServer数据库读取数据的C#源代码(如果需要访问Access数据库,可以将访问对象修改成System.Data.OleDb下的相关对象,如果需要访问foxpro数据库,可以将访问对象修改成System.Data.Odbc下的相关对象,并且是通用的,Odbc基本可以访问大部分关系型数据库)
public System.Data.DataTable GetAccessData(string selectCmdText)
{
string str = "server=.;database=StudentDB;uid=sa;pwd=sa";
System.Data.SqlClient.SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
System.Data.SqlClient.SqlCommand cmd =new System.Data.SqlClient.SqlCommand();
cmd.CommandText = selectCmdText;
cmd.Connection = conn;
System.Data.SqlClient.SqlDataAdapter adapter=new System.Data.SqlClient.SqlDataAdapter();
adapter.SelectCommand = cmd;
System.Data.DataTable dtdata = new DataTable();
adapter.Fill(dtdata);
conn.Close();
return dtdata;
}
以上代码对应到QTP的vb脚本中如下所示:
Dim conn
Set conn = DotNetFactory.CreateInstance("System.Data.SqlClient.SqlConnection")
conn.ConnectionString = "server=.;database=StudentDB;uid=sa;pwd=sa"
conn.Open()
Dim cmd
Set cmd = DotNetFactory.CreateInstance("System.Data.SqlClient.SqlCommand")
cmd.CommandText="select * from student"
cmd.Connection = conn
Dim adapter
Set adapter = DotNetFactory.CreateInstance("System.Data.SqlClient.SqlDataAdapter")
adapter.SelectCommand = cmd
Dim dtdata
Set dtdata= DotNetFactory.CreateInstance("System.Data.DataTable")
dtdata.TableName="qtptest"
adapter.Fill(dtdata)
conn.Close
msgbox dtdata.Rows.Count '显示获取的数据条数
今天事情真多,先写到这里吧,下次把通过DataSet对象对xml数据的操作给大家贡献出来,相信你会放弃使用通过ADO的对象访问xml数据的,只是个人见解,多提宝贵意见!!
收藏
举报
TAG:
QTP
QTP访问数据库