通过ASP.NET以JSON格式保存MS SQL 2008中的字符串

问题描述:

我使用Visual Studio 2010构建Web服务。语言是C#和ASP.NET 3.5。通过ASP.NET以JSON格式保存MS SQL 2008中的字符串

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

但我收到一个字符串值与来自SQL Server的所有数据。 我希望Web服务能够将数据分开发送给我,以便我可以在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; 
     } 
    } 
} 

这里是我的Web方法:

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

如何发送字符串spereate?

你可以返回一个数组:

[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(); 
    } 
} 
+0

我想我必须以json格式返回字符串。因为我的iPhone仍然向我显示所有字符串在一行中 –

+0

您的客户端应用程序期望JSON是什么格式? –

+0

它预计json格式 –

我发现,使用读取结果变成一个DataTable,然后使用LINQ to查询结果集使得返回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; 
     } 
    } 
} 
}