Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SQL数据库返回结果的Web API_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

C# 从SQL数据库返回结果的Web API

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

我正在尝试创建一个Web API,它将获得一个输入,并尝试在SQL数据库中运行Select查询。DB中的表有三个字段,但我在响应中只需要两个字段

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结果。