【问题标题】:tableAdapter inserting NULL into not nullable fieldstableAdapter 将 NULL 插入不可为空的字段中
【发布时间】:2014-02-01 17:54:49
【问题描述】:

我读过

What is the difference between null and System.DBNull.Value?

INSERT / UPDATE data using DBNull or null?

和类似的问答,但不太明白这一点。 问题:

tableAdapter 允许我将 null 存储到不可为空的字段中 (AllowDBNull = false)。

我需要检查什么?

我可以检查

string.Lenght == 0
string.IsNullOrEmpty(string)
string.text = ""

在更新命令之前,但想知道为什么表适配器让我存储 NULL

它实际上是存储 someTextBox.Text = "" 时需要抛出异常 null 不允许某些字段。

我有完全相同的问题Dataset allowing Null values even when AllowDBNull = False?,但没有解决方案。

谢谢

【问题讨论】:

  • 你有类型化或非类型化数据集吗?
  • @HABJAN 类型化数据集

标签: c# .net winforms dataadapter


【解决方案1】:

我需要更多代码才能确定您在做什么,但是:

public static object GetValue(string value) {
  if (!String.IsNullOrEmpty(value)) {
    return value;
  }
  return DBNull.Value;
}

这能解决你的问题吗?

【讨论】:

  • 何时何地检查。我正在使用自动生成的(从数据源拖放详细信息后)tableAdapter 更新命令。我有文本框,如果文本框表中没有文本仍在更新中。 TextBox 绑定到不可为空的字段。
  • 第一次插入数据时没有这个问题。抛出异常Cannot insert the value NULL into column 'pp_naziv', table 'winpro.dbo.pp'; column does not allow nulls. INSERT fails. The statement has been terminated. 但是在编辑现有记录时(如果我只删除绑定到不可为空字段的文本框之一中的文本)它将 textbox.Text = "" 存储到数据库中。
  • 您可以在控件接收到数据时通过处理 DataBinding 事件进行更改。 support.microsoft.com/kb/307860
  • 如果数据为空,您可以将其更改为" "(一个空格)。你有办法拒绝数据吗?
  • 我可以检查字符串是否为空,但它仍然是一个字符串,我需要 null 以便可以抛出 SQL 异常。为什么它让我将 someTextBox.Text = "" 存储到不可为空的字段中,以及如何在从文本框中删除文本后将值设置为 dbnull?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
相关资源
最近更新 更多