SiteServer CMS 数据导出为 JSON

来源:互联网 发布:matlab读取字符串数组 编辑:程序博客网 时间:2024/05/20 23:57
<%@ WebHandler Language="C#" Class="export" %>using System;using System.Web;using System.Data;using Newtonsoft.Json;using System.Text;using System.IO;using System.Data.SqlClient;using System.Collections.Generic;public class export : IHttpHandler {    public void ProcessRequest (HttpContext context) {        context.Response.ContentType = "text/plain";        context.Response.Write(Export());    }       string Export(){        StringBuilder sb = new StringBuilder();        JsonWriter writer = new JsonTextWriter(new StringWriter(sb));        writer.Formatting = Formatting.Indented;        writer.WriteStartObject();        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);        conn.Open();        SqlCommand cmd = new SqlCommand("", conn);        cmd.CommandText = @"SELECT t.TABLE_NAME FROM sysindexes i, INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_NAME = object_name(i.id) and t.TABLE_TYPE = 'BASE TABLE' GROUP BY t.TABLE_SCHEMA, t.TABLE_NAME HAVING max(i.rows)>0";               SqlDataReader reader = cmd.ExecuteReader();        List<string> list = new List<string>();        while (reader.Read())        {            list.Add((string)reader[0]);        }        reader.Close();        for (int i = 0; i < list.Count; i++)        {            cmd.CommandText = "SELECT * FROM " + list[i];            reader = cmd.ExecuteReader();            WriteDataTableToJson(writer, reader, list[i]);            reader.Close();        }                      conn.Close();        writer.WriteEndObject();        return sb.ToString();    }    void WriteDataTableToJson(JsonWriter writer, IDataReader reader, string tablename)    {        writer.WritePropertyName(tablename);        writer.WriteStartArray();        while (reader.Read())        {            writer.WriteStartObject();            for (int i = 0; i < reader.FieldCount; i++)            {                writer.WritePropertyName(reader.GetName(i));                writer.WriteValue(reader[i]);            }            writer.WriteEndObject();        }        writer.WriteEndArray();    }       public bool IsReusable {        get {            return false;        }    }}

0 0