kavensyw 发表于 2010-9-28 10:24:33

C#如何返回数组,生成Dll,供QTP调用

本帖最后由 kavensyw 于 2010-9-28 10:28 编辑

期望目标:C#连接数据库,查询,返回其中一列的所有值,编译后,生成dll,供QTP调用我使用的方法:1、返回string数组;2、返回dictionary;3、返回List<string>由于C#与vbs识别的类型不一样,我感觉返回string数组应该是最靠谱的,但也没成功。请各位大侠教教我该如何来处理?题外话:为何这两天我在论坛按CTrl+Shift切换语言,常无响应,其他网页正常。是我的输入法问题?C#代码如下,编译后生成dllusing System;using System.Collections.Generic;using System.Data.SqlClient;using System.Data; namespace SqlTest{    public class SelectTest
{       private Dictionary<int, string> dic;       public Dictionary<int,string> myData
{            get { return dic; }
}       public void GetData(string strCnn, string strCmd)
{            SqlConnection conn;            SqlCommand cmd;
dic = new Dictionary<int, string>();

conn = new SqlConnection(strCnn);
cmd = new SqlCommand(strCmd, conn);
conn.Open();             SqlDataReader dReader;            //returnData = new List<string>();
dReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);            for(int i=0;dReader.Read()!=false;++i)
{
dic.Add(i, dReader.ToString());
}
}
}}
QTP代码:Dim testObj'调用.net的对象Dim strCnn'数据库连接字符串Dim strCmd'查询指令Dim msgDic'Dicitionary对象strCnn ="Data Source=IP地址;Initial Catalog=数据库;User ID=用户名;password=密码"Set test Obj=DotNetFactory.CreateInstance("SqlTest.SelectTest","H:\Test\ClassLibrary1\ClassLibrary1\obj\Release\ClassLibrary1.dll")strCmd = "select * from Address"testObj.GetData strCnn,strCmd'下面该如何调用myData返回数组?msgDic = testObj.myDatamsgbox msgDic.Items(0)Set msgDic = NothingSet testObj = Nothing

kavensyw 发表于 2010-9-28 10:33:16

本帖最后由 kavensyw 于 2010-9-28 10:39 编辑

我后来想了个方法:把查询到的值,用逗号等分隔符连接起来,QTP获取字符串,再用Split拆分
但也有个问题,如果列太多,字符串会过长
不知道有啥直接的方法

shanxi 发表于 2010-9-28 14:51:06

本帖最后由 shanxi 于 2010-9-28 15:19 编辑



VBS只能识别Variants类型的数组

kavensyw 发表于 2010-9-28 15:38:01

本帖最后由 kavensyw 于 2010-9-28 15:40 编辑

回复 3# shanxi

我从C#中用public string myData{}返回单个字符串,VBS可以轻易获取
那如果从C#中用public string[] myData{}返回结果,VBS能识别吗,有无方法获取?

shanxi 发表于 2010-9-28 16:09:19

VBS            C#
Variant       object

kavensyw 发表于 2010-9-28 16:21:29

回复 5# shanxi

是啊,我用TypeName,C#返回过来的就3种int,string,object
那就没法子用C#一次返回多个数据了吗
页: [1]
查看完整版本: C#如何返回数组,生成Dll,供QTP调用