【问题标题】:How to assign true or false value to column如何为列分配真值或假值
【发布时间】:2019-08-20 14:53:33
【问题描述】:

如何为列分配真值或假值。我正在计算一个 ID 的值。然后检查计数并为其分配真或假布尔值。在视图方面,我需要检查传入的值是真还是假,并根据真假值在我的视图中显示不同的文本。但现在我的 Item.Complete 值总是假的。我在这里做错了什么?

var sqlst = @"select count(*) as columnCount, mem_name as Name, mem_add as address from my_table whereid = 1234"
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MY_CONNECTION"].ConnectionString))
{
 connection.Open();
using (var sqlCommand = new SqlCommand(sqlst, connection)

using (var sqlResult = sqlCommand.ExecuteReader())
{
    while (sqlResult.Read())
{
    var checkcount = Convert.ToInt32(sqlResult["columnCount"].ToString());

    if (checkcount != 0)
    {
        Item.Complete = sqlResult["columnCount"].ToString() == "YES" ? true:false;
    }
    else
    {
        Item.Complete = sqlResult["columnCount"].ToString() == "NO" ? true: false;
    }

}
  }
}

【问题讨论】:

  • 您确定名为ColumnCount 的列具有名为YES 的值吗?因为这不是我与计数相关联的词。 (另外,它不可能是YES,因为那样Convert.ToInt32 就不起作用了。要么你的列名是错误的,要么你的值是错误的。)
  • 我的模型是这样的 public bool columnCount { get;放; }.我可以看到在 checkcount 中获取整数值。
  • 您不需要ternary operator 来指定真假,因为== 返回一个布尔值。
  • 如果列是 BIT 并映射到布尔值,那么整个 .ToString() 舞蹈是多余的。 Item.Complete = (bool) sqlResult["columnCount"] 应该可以。
  • 您提供的查询是错误的,因为您没有使用任何带有count(*)group by 子句,所以它会出错。

标签: c# sql


【解决方案1】:

而不是传递yesNo 尝试使用 1 和 0

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多