【问题标题】:How to call columns allowing null values appropriately如何正确调用允许空值的列
【发布时间】:2013-01-05 11:46:57
【问题描述】:

我有一个包含以下列的表格

EndDate      DateTime AllowNulls
IsApproved   Bit      AllowNulls

当我向我的表发送选择查询时,这两列会产生错误。

假设这是我的选择查询。

SELECT S.Name, S.Surname,
     CASE 
        WHEN S.EndDate IS NOT NULL AND S.IsApproved = 1 THEN 'Left' 
        WHEN S.EndDate IS NOT NULL AND S.IsApproved = 0 THEN 'Waiting' 
        WHEN S.EndDate IS NULL AND S.IsApproved IS NULL THEN 'Joined' 
        ELSE '' 
      END AS Durumu
FROM STUDENT S

我收到的错误: 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值

我的问题是如何正确选择这些空列?

附:此错误与返回具有相同主键的相同查询无关,因为我的表中只有一个条目:)

【问题讨论】:

  • 我假设您正在使用强类型数据集来获取数据,对吗?此错误不是来自您的数据库,而是来自您的数据集。您可以通过这种方式检查导致异常的原因:在填充DataTable/DataSet之前设置一个断点。在调试器的快速监视窗口中执行它。执行DataTable.GetErrors 获取所有设置了RowError 的行。然后查看一行或多行的此属性以查看实际问题。也许你只需要通过配置窗口刷新表格。

标签: c# sql tsql datatable


【解决方案1】:

我假设您正在使用强类型数据集来获取数据,对吗?

此错误不是由您的数据库引发的,而是由您的DataSet 引发的。

您可以通过这种方式检查导致异常的原因:

  • 在填充DataTable/DataSet之前设置断点。
  • 在调试器的快速监视窗口中执行它
  • 执行DataTable.GetErrors获取所有设置RowError的行
  • 查看一行或多行的此属性以查看实际问题

也许你只需要通过配置窗口刷新表,因为同时你已经改变了 sql-server 中的约束。

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 2017-12-06
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多