我应该使用什么数据类型时,添加一个列,将包含一个null与SQL Server的数据表

本文关键字:null 包含一 SQL 数据表 Server 一个 数据类型 什么 添加 我应该 | 更新日期: 2023-09-27 18:14:17

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

{"answerswers":[
   {"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);
        }

我认为我所有的代码是好的,除了我不知道如何添加一个列到一个数据表,将接受一个布尔值。我尝试了BIT和BIT和BIT,但它显示了这些类型在VS2013中的语法错误。

我应该使用什么数据类型时,添加一个列,将包含一个null与SQL Server的数据表

我会尝试使用变量TinyInt而不是布尔值。这是一个单字节的数据类型,如果您愿意,可以使用它来输入值1或0,分别表示真和假。也许还有其他方法,但这是我在我的表格中使用的方法。

这是一篇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);
}

我现在没有机会测试这个,所以让我知道它是否至少为你指明了正确的方向。