繁体   English   中英

使用SQL Server向数据表添加包含空值的列时,我应该使用哪种数据类型?

[英]What datatype should I use when adding a column that will contain a null to a Datatable with SQL Server?

我有一个正在发送此数据的客户端:

{"answers":[
   {"response":true},
   {"response":true},
   {"response":true},
   {"response":false},
   {"response":false}]}

我有这样的课程:

public class AnswerRow
{
    public bool? Correct { get; set; }
    public bool Response { get; set; }
}

public class AnswerRowList
{
    public IList<AnswerRow> Answers { get; set; }
}

在我的WebAPI中,我收到如下数据:

    [HttpPut]
    [Route("MarkQuestion/{testQuestionId}/{questionUId:Guid}")]
    [ValidateModel]
    public async Task<IHttpActionResult> MarkQuestion(string testQuestionId, Guid questionUId, [FromBody]AnswerRowList answer)
    {
        var createdBy = User.Identity.GetUserId();
        DataTable answers = new DataTable();
        answers.Columns.Add("Response", typeof(????));
        foreach (AnswerRow a in answer.Answers)
        {
            answers.Rows.Add(a.Response);
        }

我认为我所有的代码都可以,除了我不知道如何向将接受布尔值的DataTable添加一列。 我尝试了BIT和Bit and bit,但是在VS2013中针对这些类型显示了语法错误。

我会尝试使用变量TinyInt而不是布尔值。 这是一个1字节的数据类型,您可以根据需要输入值1或0,分别代表true和false。 可能还有其他方法,但这就是我在表中使用的方法。

这是MSDN文章,解释了一些数据类型。

编辑对不起,但是我不知道我上次如何使用TinyInt。 我建议您将类型更改为INT,并且按照惯例,仅使用值1或0。因此,您可以在此处获取代码:

    answers.Columns.Add("Response", typeof(????));
    foreach (AnswerRow a in answer.Answers)
    {
        answers.Rows.Add(a.Response);
    }

并使其:

answers.Columns.Add("Response", typeof(int));
foreach(AnswerRow a in answer.Answers)
{
    if(a.Response) // Here I'm trying to check if a.Response is true
        answers.Rows.Add(1);
    else
        answers.Rows.Add(0);
}

目前,我没有机会对此进行测试,因此,请告诉我是否至少可以为您指明正确的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM