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:39 编辑
我后来想了个方法:把查询到的值,用逗号等分隔符连接起来,QTP获取字符串,再用Split拆分
但也有个问题,如果列太多,字符串会过长
不知道有啥直接的方法 本帖最后由 shanxi 于 2010-9-28 15:19 编辑
VBS只能识别Variants类型的数组 本帖最后由 kavensyw 于 2010-9-28 15:40 编辑
回复 3# shanxi
我从C#中用public string myData{}返回单个字符串,VBS可以轻易获取
那如果从C#中用public string[] myData{}返回结果,VBS能识别吗,有无方法获取? VBS C#
Variant object 回复 5# shanxi
是啊,我用TypeName,C#返回过来的就3种int,string,object
那就没法子用C#一次返回多个数据了吗
页:
[1]