2013年7月22日 星期一

在ASP.NET中顯示由SQL產生的JSON格式

透過網頁的方式來傳遞資料給手機或平板等 ,大多使用JSON的格式,但是一般使用JSON都要經過層層轉換,在程式撰寫上不甚便利,經過多方嘗試,找出最便利且快速的方式來產生JSON資料串.

 由於只是單純呈現資料,不需版面等資料,所以新增一個泛型處理常式的頁面(ashx),在資料庫繫結的部分使用以下語法
 SELECT A,B,C,D   FROM TABLE_1 FOX  XML AUTO,ROOT('TABLE_1')
即可由資料庫產生XML的結構檔,資料庫版本需為MS SQL2005以上版本才有支援,
ROOT('TABLE_1')一定要加上,不然會有錯誤產生.

轉換JSON使用目前評價最好的JSON.NET,在VISUAL STUDIO中,使用NuGet找到JSON.NET套件,安裝完就可以使用,使用前先宣告進來

完整程式碼如下

<%@ WebHandler Language="C#" Class="prog" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
using Newtonsoft.Json;

public class prog : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {    

        using (SqlConnection conn = new SqlConnection         (System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        {
            conn.Open();
            SqlCommand cmd1 = new SqlCommand("SELECT A,B,C,D   FROM TABLE_1 FOX  XML AUTO,ROOT('TABLE_1')", conn);          
          
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(cmd1.ExecuteXmlReader());                  
            string json = JsonConvert.SerializeXmlNode(xDoc);
            context.Response.ContentType = "text/plain";
            context.Response.Write(json);
        }
       
       
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}


沒有留言:

張貼留言