【发布时间】:2019-03-15 17:19:14
【问题描述】:
我正在尝试从 Web API 连接到 SQL Server 并将结果集返回为 JSON。但是我在这里显示的代码没有按预期工作。我正在尝试将整个查询响应作为 JSON 返回:
[HttpGet]
public HttpResponseMessage Getdetails(string ROOM)
{
string commandText = "SELECT * from [TDB].[dbo].[results_vw] where ROOM = @ROOM_Data";
string connStr = ConfigurationManager.ConnectionStrings["TDBConnection"].ConnectionString;
var jsonResult = new StringBuilder();
using (SqlConnection connection = new SqlConnection(connStr))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ROOM_Data", SqlDbType.VarChar);
command.Parameters["@ROOM_Data"].Value = ROOM;
connection.Open();
var reader = command.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
response.Content = new StringContent(jsonResult.ToString());
connection.Close();
return response;
}
}
此代码返回此结果:
333838362692368203368203368203362692368203359544362692368203362692368203362692368203368203
我期望 JSON 为
{"data":
[
{"R_ID":"368203","ROOM":"K2"},
{"R_ID":"368203","ROOM":"K2"}
]}
现在我创建了一个名为 DatabaseResult 的模型类来存储响应,但我不确定如何将结果存储到控制器中的模型类中
public class DatabaseResult
{
public int r_id { get; set; }
public string room { get; set; }
}
【问题讨论】:
-
那是因为你只返回每行第一列的值
-
我建议使用 Dapper 库来帮助您进行 ADO 调用。
-
@Nkosi 我可以使用 Model 类而不是使用额外的库来存储响应吗?
-
是的。我只是建议这样做,因为它会使事情变得更容易。
-
@Nksoi 我不确定如何将它们存储在模型类中
标签: asp.net sql-server asp.net-web-api sqlconnection sqlcommand