<%@ 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;
}
}
}