在 C# 中从 SQL 查询写入 Json 字符串

本文关键字:Json 字符串 查询 中从 SQL | 更新日期: 2023-09-27 18:34:44

我想在"reader"中创建一个json字符串。Read((" 我该怎么做?这是针对我正在创建的 API,因此您可以请求页面,例如 api.ashx?tablename=CurrencySymbol&id=5 希望有人能提供帮助

我想从数据库中的列值创建 json

**

我们不用担心这个的安全性,它只是为了一个只有我会使用的内部应用程序**

    public void ProcessRequest (HttpContext context) 
    { 
        context.Response.Clear();
            string tablename = context.Request.QueryString["tablename"];
            int ID = Int32.Parse(context.Request.QueryString["ID"]);
            context.Response.ContentType = "text/html";
            SqlConnection sqlConnection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["WorldViewDatabase"].ConnectionString);
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;
            cmd.CommandText = "SELECT * FROM " + tablename "WHERE ID = " + ID;
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection1;
            sqlConnection1.Open();
            reader = cmd.ExecuteReader();
            // Data is accessible through the DataReader object here.
            while (reader.Read())
            {
                //context.Response.Write(reader);
            }
            sqlConnection1.Close();
            context.Response.Write(ID);
            context.Response.Write(tablename);
            return;
   }

在 C# 中从 SQL 查询写入 Json 字符串

您无法从reader.Read()方法获取 json 结果。你甚至不需要这样的行为。

数据库行包装在具体类中,然后使用 JSON.NET 库将对象序列化为 json

http://james.newtonking.com/json

看看它的文档:http://james.newtonking.com/json/help/index.html

编辑

public class T1 {}
public class T2 {}
public void ProcessRequest (HttpContext context) 
{
    object data = null;
    string tablename = context.Request.QueryString["tablename"];
    if(tablename == "T1")
    {
        data = LoadTable1Data();
    }
    else if(tablename == "T2")
    {
        data = LoadTable2Data();
    }
    else
    {
        throw new Exception("Unknown tablename: " + tablename);
    }
    string jsonData = JsonConvert.SerializeObject(data);
    context.Response.Write(jsonData);
}
public List<T1> LoadTable1Data()
{
    List<T1> list = new List<T1>();
    ...
    SqlDataReader reader = cmd.ExecuteReader();
    while(reader.Read())
    {
        list.Add(new T1()); // fill T1 object with row data
    }
    return list;
}