这是使用Robot连接TestDirector数据库的一个例子。首先在控制面板的ODBC中新建一个DSN,选择SQL Server连接,名字是td_test(这个可以自己随便取),连接服务器选择你TD库保存的DB服务器名称。连接你想要查询的库名,我这里是gpt_gogs_db,登录名是td,密码tdtdtd(在TD中新建一个project时,数据库默认所有者为td,密码为tdtdtd),这里仅两不要使用权限过大的用户,因为在脚本中是要明文写入密码的。最后测试一下数据源。
开始编写脚本了:
======================================================================
Sub Main
Dim Result As Integer
Dim connect as long
Dim outputstr,query as string
Dim out(1 to 2,1 to 16) as variant
'这里定义一个二维数组,第一维表示数据库中查询结果中的行,第二维表示查询结果中的列,可以看到这里可以一次查询并存储两行两列
dim retcode as variant
dim i as integer
'Initially Recorded: 2005-7-18 22:16:12
'scrīpt Name: sqltest
connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd",outputstr)
'注意这里各个参数和等号及等号后面赋值是紧跟着的,没有空格,因为如果有空格的话连接的时候连空格也算上
'这样的话连接的时候就会提示选择DSN或是输入用户名,密码
query = "select bg_bug_id,bg_status from bug where bg_subject='113'"
'最好在查询分析器中执行一下这条语句
call SQLExecquery(connect,query)
call SQLRetrieve(connect,out())
msgbox out(1,1)
msgbox out(2,1)
msgbox out(1,2)
msgbox out(2,2)
'显示保存的结果
' next
call sqlclose(connect)
End Sub
=================================================================================
这里尤其注意那个设置二维数组的地方,这个二维数组可以一次存储多个查询结果,其结构就类似SQL Server中查询分析器查询后的结果。
如果我生明了两个二维数组即可保存不同的查询结果。
其读取查询内容的函数也应该重点看看。
如果想要返回不同的查询语句结果,应该这样写:
=================================================================================
SubMain
Dim Result As Integer
Dim connect as long
Dim outputstr,query1,query2 as string
Dim out1(1 to 2,1 to 1) as variant
Dim out2(1 to 2,1 to 1) as variant
'这里定义一个二维数组,第一维表示数据库中查询结果中的行,第二维表示查询结果中的列,可以看到这里可以一次查询并存储两行两列
dim retcode as variant
dim i as integer
'Initially Recorded: 2005-7-18 22:16:12
'scrīpt Name: sqltest
connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd")
'注意这里各个参数和等号及等号后面赋值是紧跟着的,没有空格,因为如果有空格的话连接的时候连空格也算上
'这样的话连接的时候就会提示选择DSN或是输入用户名,密码
query1 = "select bg_bug_id,bg_status from bug where bg_subject='113'"
'最好在查询分析器中执行一下这条语句
query2 = "select bg_bug_id,bg_severity from bug where bg_subject='113'"
'不同的查询语句
call SQLExecquery(connect,query1)
call SQLRetrieve(connect,out1())
'执行完查询语句后赋值给一个二维数组,切记!
call SQLExecquery(connect,query2)
call sqlretrieve(connect,out2())
msgbox out1(1,1)
msgbox out1(2,1)
msgbox out2(1,1)
msgbox out2(2,1)
'显示保存的结果
' next
call sqlclose(connect)
End Sub