前端做表单或者其他什么功能的时候,需要在数据库中调取大量数据,并且将这些数据封装成JSON格式。这里给出实现该功能的比较重要的几个代码片段。
void ReturnData()
{
//获取数据库中的数据
string sql = "select * from UserInfo ";
DataSet ds = ReturnDataSet(sql, "Usertable");
//将数据传给封装成JSON的方法
string results = DataToJson(ds.Tables["Usertable"], ds.Tables["Usertable"].Rows.Count);
//将最终得到的JSON传递给前端
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.Write(results);
HttpContext.Current.Response.End();
}
从数据库中读取数据并将数据返回到表中的具体操作如下:
public static DataSet ReturnDataSet(string sqlstr, string tablename)//返回DataSet、Datatable
{
conn = MyConnection();
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(sqlstr, conn);
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
DataSet ds = new DataSet();
sda.Fill(ds,tablename);
return ds;
}
封装成JSON的具体操作如下:
string DataToJson(DataTable dt, int count)
{
StringBuilder sbjson = new StringBuilder();
sbjson.Append("{");
sbjson.Append("\"total\":" + count + ",\"rows\":[");
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i > 0)
{
sbjson.Append(",");
sbjson.Append("{");
foreach (DataColumn dc in dt.Columns)
{
if (dt.Columns.IndexOf(dc) > 0)
{
sbjson.Append(",");
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
else
{
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
}
sbjson.Append("}");
}
else
{
sbjson.Append("{");
foreach (DataColumn dc in dt.Columns)
{
if (dt.Columns.IndexOf(dc) > 0)
{
sbjson.Append(",");
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
else
{
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
}
sbjson.Append("}");
}
}
}
sbjson.Append("]}");
return sbjson.ToString();
}