2013-08-21 19 views
0

我有Web方法。如何在C#中执行列表<String[]>的Web方法?

[WebMethod] 
public List<string[]> getObjective() 
{ 
    List<string[]> objectiveStringList = new List<string[]>(); 
    con.dbConnect(); 
    objectiveStringList = con.getObjective(); 
    con.dbClose(); 

    return objectiveStringList; 
} 

而且,查询。

public List<string[]> getObjective() 
{ 
    string strCMD = "SELECT objective FROM CorrespondingBall WHERE objective IS NOT NULL"; 
    SqlCommand cmd = new SqlCommand(strCMD, conn); 
    SqlDataReader dr = cmd.ExecuteReader(); 

    List<string[]> objectiveStringList = new List<string[]>(); 
    while (dr.Read()) 
    { 
     objectiveStringList.Add((string[])dr["objective"]); 
    } 
    return objectiveStringList; 
} 

但是,显示错误“HTTP 500内部服务器错误”消息。我用List Byte Array试过了,没有错误。有谁知道我该如何解决它?

仅供参考:我正在为Windows Phone 7做一个应用程序。

+0

什么是“客观的数据类型“? –

+0

嗨@sangramparmar,它是NVARCHAR(MAX)。 –

回答

1

你的代码不正确。

(string[])dr["objective"] 

你会在此行中您的WebMethod越来越例外。因为您无法直接将dr["objective"]投射到string[]

编辑:

正如您在数据类型下面的评论都提到是NVARCHAR这样你就可以做到这一点

objectiveStringList.Add((string)dr["objective"]); 
+0

嗨,@NoOne,好吧。我该如何解决它? –

+0

保存时目标的数据类型是什么? – Ehsan

+0

它是NVARCHAR(MAX)。 –

0

试试这个:

public List<string> getObjective() 
    { 
     string strCMD = "SELECT objective FROM CorrespondingBall WHERE objective IS NOT NULL"; 
     SqlCommand cmd = new SqlCommand(strCMD, conn); 
     SqlDataReader dr = cmd.ExecuteReader(); 

     List<string> objectiveStringList = new List<string>(); 
     while (dr.Read()) 
     { 
      objectiveStringList.Add(dr["objective"].ToString()); 
     } 
     return objectiveStringList; 
    } 
+0

如果OP想要返回List 而不是列表 Ehsan

+0

嗨@sangramparmar,谢谢。有效!但是,我想知道我是否仍然可以在我的应用程序中调用数组的值? –

+0

@LiuJiaHui你可以把List当作数组 –

相关问题