通过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();
}
}
答
我发现,使用读取结果变成一个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;
}
}
}
}
我想我必须以json格式返回字符串。因为我的iPhone仍然向我显示所有字符串在一行中 –
您的客户端应用程序期望JSON是什么格式? –
它预计json格式 –