在 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;
}
您无法从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;
}