【问题标题】:How can I prevent a user from saving a record with a null value?如何防止用户保存具有空值的记录?
【发布时间】:2011-06-09 23:58:52
【问题描述】:

我是数据库编程的新手,我有一个小型数据库 (SQL CE 3.5)。它有一个不接受空值的“姓氏”列。我正在使用 BindingNavigator 来解决问题。我是否必须为该导航器上的每个控件设置类似于下面的事件。还是有更简单的方法?

我将 C# 与 .NET 3.5 和 WinForms 一起使用。这也只是一个单表数据库。

        if (!string.IsNullOrEmpty(lastNameTextBox.Text))

        {
            this.Validate();
            this.tblMembersBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.dataSet1);
        }
        else
        {
            MessageBox.Show("The Last Name Field cannot be empty");
        }

谢谢

【问题讨论】:

  • 空字符串与空值完全不同...
  • 你说的是数据库还是应用程序级别??
  • C#? VB?实体框架? .NET 4? .NET 3.5? ASP.NET?银光?我认为您需要指定它们。
  • 您可以设置 TextBox = null 并使其仍显示在表单上。您也不能强制 TextBox 的文本为空,它将始终作为空字符串返回。以目前的形式,这个问题没有意义。
  • 好的,我添加了一个代码示例。我希望它能让事情更清楚。对于我的经验不足,我深表歉意。

标签: c# sql database winforms


【解决方案1】:

你真的应该使用:

if (!string.IsNullOrEmpty(lastNameTextBox.Text))
{
  ...
}

另外,为什么不直接使用RequiredFieldValidator 来确保表单不能在该字段中没有值的情况下发回?

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx

【讨论】:

  • 这不是 WebForm。 WinForms有类似的东西吗?不过,我确实喜欢 IF 条件。更彻底。
【解决方案2】:

有几种方法可以做到。

第一个将在您的 SQL 代码中。你可以使用 isnull(lastname, 'something') - http://msdn.microsoft.com/en-us/library/ms184325.aspx

或者你可以在数据库中给列一个默认值 -

ALTER TABLE your_table_name ADD CONSTRAINT
Name_of_Constraint DEFAULT 'value' FOR column_name

这对你有用吗?

【讨论】:

  • 谢谢。我正在研究您的第二个建议。
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多