gpt4 book ai didi

c# - 将 SQL 查询的结果写入 ASP.NET 中的 Web 窗体响应的简单方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:57:58 24 4
gpt4 key购买 nike

我需要一种简单的方法来将 SQL 查询(SQLDataReader 通过 sqlcommand.ExecuteReader())的结果写入 Web 表单响应(即,写入的一些字符串到 Response.Write(string)) 并且采用易于在 PHP 中阅读的格式。我正在考虑创建一个 JSON 对象,将其转换为字符串,然后将该 JSON 字符串写入响应,但我找不到在 Web 窗体中执行此操作的简单方法。

我在想:

{ "tableColumn1": "value",
"tableColumn2": "value"}

但我不确定是否有使用 SqlDataReader 执行此操作的简单方法。

最终目标是使用 PHP 使 .NET 环境中经常变化的表数据易于访问,以便在 Linux 环境中读取。

最佳答案

public class myClass
{
public int myColumn { get; set; }
public string myColumn2 { get; set; }
}

public string MySqlMethod()
{
using (var conn = new SqlConnection("connectionString"))
{
var query = "SELECT * FROM SomeTable;";
var cmd = new SqlCommand(query, conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
var listToConvert = new List<myClass>();
while (dr.Read())
{
var toAdd = new myClass();
toAdd.myColumn = dr.GetInt32(dr.GetOrdinal("myColumn"));
toAdd.myColumn2 = dr.GetString(dr.GetOrdinal("myColumn2"));
listToConvert.Add(toAdd);
}
return GenerateJson(listToConvert);
}
}

public static string GenerateJson<T>(List<T> obj)
{
var returnString = "[";
var listCounter = 0;
foreach (var item in obj)
{
var counter = 0;
var props = item.GetType().GetProperties();
returnString += "{";
foreach (var prop in props)
{
returnString += "\"" + prop.Name + "\":" + "\"" + prop.GetValue(item, null) + "\"";
counter++;
if (counter != props.Count())
returnString += ",";
}
returnString += "}";
listCounter++;
if (listCounter != obj.Count())
returnString += ",";

}
returnString += "]";
return returnString;
}

这在 WebForms 中是完全“可行的”,而不是 MVC 特有的。对此的维护非常简单,只需对自定义类进行微小更改,并在表更改时添加一些新的 dr.GetWhatever。

如果您想要一个更动态的解决方案,我会尽可能研究 Entity Framework 。然后,您可以创建部分类来补充 EF 自动生成的类。那时维护几乎为零。

关于c# - 将 SQL 查询的结果写入 ASP.NET 中的 Web 窗体响应的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com