如何调用WebMethod接受Collection数据类型作为输入

时间:2014-03-16 16:44:52

标签: c# asp.net web-services asmx

我有一个.net Web方法如下

[WebMethod]
public void UpdateDataBase(List<string> values)
{
    SqlConnection conn = new SqlConnection("user id=******; password=*******; server=.\\SQLEXPRESS;database=************;");
    SqlCommand comm = new SqlCommand();
    comm.CommandText = "Insert into TestWeb(Test1,Test2,Test3) values(values[0],values[1],values[2])";
    comm.Connection = conn;
    comm.ExecuteNonQuery();
}

从excel加载项中,我创建了对具有此方法的Web Service类的引用,并使用以下方法来调用它。

private void Test()
{
    ServiceReference1.SNLSoapClient svr = new ServiceReference1.SNLSoapClient();
    List<string> values = new List<string>();
    values.Add("Test1");
    values.Add("Test2");
    values.Add("Test3");
    svr.UpdateDataBase(values);
}

但是我在最后一行得到一个错误,说Web方法只接受一个字符串数组作为输入,而不是一个不正确的List,正如你在Web方法定义中看到的那样?应该怎么做才能将集合类型传递给Web方法?

1 个答案:

答案 0 :(得分:0)

您似乎没有在SqlCommand方法中将列表值添加到UpdateDataBase

您可能需要类似的内容;

[WebMethod]
public void UpdateDataBase(List<string> values)
{
    SqlConnection conn = new SqlConnection("user id=******; password=*******; server=.\\SQLEXPRESS;database=************;");
    SqlCommand comm = new SqlCommand();
    comm.CommandText = "Insert into TestWeb(Test1,Test2,Test3) values(@p0,@p1,@p2)";
    comm.Parameters.AddWithValue("@p0", values[0]);
    comm.Parameters.AddWithValue("@p1", values[1]);
    comm.Parameters.AddWithValue("@p2", values[2]);
    comm.Connection = conn;
    comm.ExecuteNonQuery();
}