0

我用 Visual Studio 2010 构建了一个 Web 服务。语言是 C# 和 ASP.NET 3.5。

网络服务器将数据从我的 ms sql server 2008 发送到 JSON 格式的 iPhone。

但我收到一个字符串值,其中包含来自 SQL Server 的所有数据。我希望网络服务将数据单独发送给我,以便我可以在 iPhone 上更好地使用它。

这是我的 C# 类:

   namespace WebService1
{
    public class RaumklassenHelper
    {



        internal static string Raumklasse()
        {
            string raumKlassenObject = "";

            using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
            using (SqlCommand cmd = new SqlCommand(@"SELECT BEZEICHNUNG FROM RAUMKLASSE", con))
            {

                con.Open();
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {


                    while (rdr.Read())
                    {
                        if (rdr["BEZEICHNUNG"]  != DBNull.Value)
                         {

                              raumKlassenObject += rdr["BEZEICHNUNG"].ToString();
                         }

                    }


                }
            }

            return raumKlassenObject;
        }
    }
}

这是我的网络方法:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        [WebMethod]
        public string Raumklasse()
        {
            return RaumklassenHelper.Raumklasse();
        }

如何发送字符串?

4

2 回答 2

0

你可以返回一个数组:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string[] Raumklasse()
{
    return RaumklassenHelper.Raumklasse();
}

然后显然适应了数据检索方法:

public class RaumklassenHelper
{
    internal static string[] Raumklasse()
    {
        List<string> raumKlassenObject = new List<string>();

        using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
        using (SqlCommand cmd = new SqlCommand(@"SELECT BEZEICHNUNG FROM RAUMKLASSE", con))
        {
            con.Open();
            using (SqlDataReader rdr = cmd.ExecuteReader())
            {
                while (rdr.Read())
                {
                    if (rdr["BEZEICHNUNG"] != DBNull.Value)
                    {
                        raumKlassenObject.Add(rdr["BEZEICHNUNG"].ToString());
                    }
                }
            }
        }
        return raumKlassenObject.ToArray();
    }
}
于 2012-05-31T15:35:29.963 回答
0

我发现使用将结果读入 DataTable 然后使用 linq 查询结果集可以很容易地返回 json 格式的响应。

namespace WebService1
{
 public class RaumklassenHelper
 {
    internal static string Raumklasse()
    {
        DataTable tbl = new DataTable();
        JavaScriptSerializer js = new JavaScriptSerializer();
        StringBuilder sb = new StringBuilder();

        using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
        using (SqlCommand cmd = new SqlCommand(@"SELECT BEZEICHNUNG FROM RAUMKLASSE", con))
        {

            con.Open();
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            tbl.Load(rdr);
            rdr.Close();
            var linqResults = from DataRow row in tbl.AsEnumerable()
                              select new { raumKlassenObject = row.Field<string>("BEZEICHNUNG") };
            js.Serialize(linqResults, sb);
            string returnJSON = sb.ToString();
            return returnJSON;
        }
    }
}
}
于 2012-05-31T18:34:29.817 回答