C# 从SQL数据库返回结果的Web API
我正在尝试创建一个Web API,它将获得一个输入,并尝试在SQL数据库中运行Select查询。DB中的表有三个字段,但我在响应中只需要两个字段C# 从SQL数据库返回结果的Web API,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在尝试创建一个Web API,它将获得一个输入,并尝试在SQL数据库中运行Select查询。DB中的表有三个字段,但我在响应中只需要两个字段 public async Task<IHttpActionResult> Get(string LabName){ string strcon = ConfigurationManager.ConnectionStrings["CDBConnection"].ConnectionString; SqlConnection DbConnect
public async Task<IHttpActionResult> Get(string LabName){
string strcon = ConfigurationManager.ConnectionStrings["CDBConnection"].ConnectionString;
SqlConnection DbConnection = new SqlConnection(strcon);
SqlDataReader reader = null;
DbConnection.Open();
using (SqlCommand command = new SqlCommand("SELECT Acc, CSeq FROM [dbo].[c_Account] WHERE Acc = @AccName", DbConnection))
{
command.Parameters.Add(new SqlParameter("AccName", LabName));
reader = command.ExecuteReader();
List<QueryResult> qresults = new List<QueryResult>();
while (reader.Read())
{
QueryResult qr = new QueryResult();
qr.AccountID = reader["AccountID"].ToString();
qr.CounterSeq = ((int)reader["CounterSeq"]).ToString("000");
qresults.Add(qr);
}
DbConnection.Close();
//build json result
return Ok(qresults);
}
}
公共异步任务Get(字符串LabName){
字符串strcon=ConfigurationManager.ConnectionString[“CDBConnection”]。ConnectionString;
SqlConnection-DbConnection=新的SqlConnection(strcon);
SqlDataReader=null;
DbConnection.Open();
使用(SqlCommand command=new SqlCommand(“从[dbo].[c_Account]中选择Acc,CSeq,其中Acc=@AccName”,DbConnection))
{
Add(新的SqlParameter(“AccName”,LabName));
reader=command.ExecuteReader();
List qresults=新列表();
while(reader.Read())
{
QueryResult qr=新的QueryResult();
qr.AccountID=读卡器[“AccountID”].ToString();
qr.CounterSeq=((int)读卡器[“CounterSeq”).ToString(“000”);
qresults.Add(qr);
}
DbConnection.Close();
//生成json结果
返回Ok(qresults);
}
}
这里的问题是它将响应中的所有三个字段作为
[{“Acc”:“xyz”,“CSeq”:“123”,“Year”:null}]
但我只是希望得到同样的回应
[{“Acc”:“xyz”,“CSeq”:“123”}]
还可以返回类似以下内容的响应:
与Acc xyz关联的CSeq为123
修改您的查询结果
模型并添加到属性年份
public class QueryResult {
[JsonIgnore]
public int? Year {get;set;} // guessed the type
// the rest of your properties in the model
}
我假设您正在为web api项目使用json.net(默认)序列化程序
也可以返回类似于
的响应,与Acc xyz相关的CSeq为123
您必须向要返回的模型中添加字符串属性,并自己格式化该文本。web api框架中没有内置任何东西可以凭空创建人类可读的文本。它实际上应该是html/脚本中内置的表示层功能,而不是服务器上的任何功能。其余代码在哪里?负责创建JSON(您所询问的内容)的代码不在这里。@RobertHarvey-它位于web api方法中,该方法返回
OkNegotiatedContentResult
(通过方法Ok),因此调用方使用http头内容类型
确定内容类型。Web api(具有默认配置)将使用json.net(另一个默认)作为序列化程序,从传入的模型自动生成json结果。