一尘不染

从C#.NET的DataTable到JSON

json

我是C#和.NET的新手,但是我编写了此代码来调用存储过程,然后我想获取返回的DataTable并将其转换为JSON。

    SqlConnection con = new SqlConnection("connection string here");
    SqlDataAdapter da = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("getDates", con);
    SqlParameter par = new SqlParameter("@PlaceID", SqlDbType.Int);
    par.Value = 42;
    da.SelectCommand = cmd;
    cmd.Parameters.Add(par);
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();

    con.Open();

    try{
        cmd.CommandType = CommandType.StoredProcedure;
        da.Fill(ds);
    }

那么我的问题是最好/最简单的方法是什么?一个例子很好,因为我对此还很陌生。


阅读 165

收藏
2020-07-27

共1个答案

一尘不染

代替数据表,您应该使用数据读取器。您的代码效率低下,而且有点难以阅读-您可能需要执行以下操作:

StringBuilder json = new StringBuilder();

using(SqlConnection cnn = new SqlConnection(your_connection_string)) 
{
    cnn.open();

    using(SqlCommand cmd = new SqlCommand("name_of_stored_procedure", cnn)) 
    {
        cmd.Paramters.AddWithValue("@Param", "value");

        using(SqlDataReader reader = cmd.ExecuteReader()) 
        {
            while(reader.Read()) 
            {
                json.AppendFormat("{{\"name\": \"{0}\"}}", reader["name"]);
            }
        }
    }

    cnn.close();
}

然后,您可以使用json.ToString该信息

2020-07-27