gpt4 book ai didi

c# - 从 SqlDataReader 创建 JSON 字符串

转载 作者:可可西里 更新时间:2023-11-01 08:52:46 24 4
gpt4 key购买 nike

更新

我想通了。 Check out my answer below .


我正在尝试创建一个 JSON 字符串来表示数据库表中的一行以在 HTTP 响应中返回。好像Json.NET将是一个很好的工具。但是,我不确定如何我正在从数据库中读取时构建 JSON 字符串。

问题由令人讨厌的评论标记 /******** ********/

// connect to DB
theSqlConnection.Open(); // open the connection

SqlDataReader reader = sqlCommand.ExecuteReader();
if (reader.HasRows) {

while(reader.Read()) {

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);

using (JsonWriter jsonWriter = new JsonTextWriter(sw)) {

// read columns from the current row and build this JsonWriter
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("FirstName");

// I need to read the value from the database
/******** I can't just say reader[i] to get the ith column. How would I loop here to get all columns? ********/
jsonWriter.WriteValue(... ? ...);
jsonWriter.WritePropertyName("LastName");
jsonWriter.WriteValue(... ? ...);
jsonWriter.WritePropertyName("Email");
jsonWriter.WriteValue(... ? ...);

// etc...
jsonWriter.WriteEndObject();
}
}
}

问题是我不知道如何从 SqlReader 中读取行中的每一列,这样我就可以调用 WriteValue 并为其提供正确的信息和将其附加到正确的列名称。所以如果一行看起来像这样......

| FirstName | LastName | Email |

...我将如何为每个这样的行创建一个 JsonWriter,以便它包含该行的所有列名和每列中的相应值,然后使用该 JsonWriter 构建一个 JSON 字符串,准备好通过 HTTP 响应返回?

如果我需要澄清任何事情,请告诉我。

最佳答案

我的版本:

这不使用 DataSchema 并将结果包装在一个数组中,而不是每行使用一个编写器。

SqlDataReader rdr = cmd.ExecuteReader();

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);

using (JsonWriter jsonWriter = new JsonTextWriter(sw))
{
jsonWriter.WriteStartArray();

while (rdr.Read())
{
jsonWriter.WriteStartObject();

int fields = rdr.FieldCount;

for (int i = 0; i < fields; i++)
{
jsonWriter.WritePropertyName(rdr.GetName(i));
jsonWriter.WriteValue(rdr[i]);
}

jsonWriter.WriteEndObject();
}

jsonWriter.WriteEndArray();
}

关于c# - 从 SqlDataReader 创建 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554472/

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