Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加新记录时,windows窗体上未显示Visual studio SQL默认值_C#_Sql_Sql Server_Visual Studio_Default Value - Fatal编程技术网

C# 添加新记录时,windows窗体上未显示Visual studio SQL默认值

C# 添加新记录时,windows窗体上未显示Visual studio SQL默认值,c#,sql,sql-server,visual-studio,default-value,C#,Sql,Sql Server,Visual Studio,Default Value,我在VisualStudio中创建了一个SQL表,并在字段上设置了一个默认值 该表连接到我的C#项目(在同一个解决方案中),可以很好地完成,但是通过windows窗体创建新行时,默认值不会出现 评论问题的信息: 当我为新行单击+时,它不会显示在窗体上 当从数据库中添加一行时,默认值就存在了 通过表单添加新行,保留默认值为空、已保存、重新打开且没有默认值的字段 基于此 如果未指定其他值,则默认值将添加到所有新记录中 因此,在将行保存到数据库之前,默认值不会显示。您可以通过编程方式添加该行,但

我在VisualStudio中创建了一个SQL表,并在字段上设置了一个默认值

该表连接到我的C#项目(在同一个解决方案中),可以很好地完成,但是通过windows窗体创建新行时,默认值不会出现

评论问题的信息:

  • 当我为新行单击+时,它不会显示在窗体上
  • 当从数据库中添加一行时,默认值就存在了
  • 通过表单添加新行,保留默认值为空、已保存、重新打开且没有默认值的字段
    • 基于此

      如果未指定其他值,则默认值将添加到所有新记录中

      因此,在将行保存到数据库之前,默认值不会显示。您可以通过编程方式添加该行,但如果此列中没有提供值,则使用默认值约束指定值

      您可以在添加新行时使用它

      textBox1.Text = Properties.Settings.Default.TextBoxDefaultValue;
      
      如果在Visual Studio中定义默认值时遇到问题,请尝试使用SQL查询添加默认约束:

      ALTER TABLE XXX 
      ADD CONSTRAINT def_Retired
      DEFAULT 'N' FOR Retired;
      
      更新1

      在表单设计器上,单击BindingNavigator,在属性窗口中将
      AddNewItem
      属性设置为
      (无)

      尝试将以下代码添加到
      bindingNavigatorAddNewItem\u单击事件

      private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) {
      
       vehiclesBindingSource.AddNew();
       Textbox1.Text = Properties.Settings.Default.Text1default;
      
      };
      

      您正在动态生成的表单中指定默认值。您可能需要评估客户端/服务器端脚本的组件是否也能够并行地适应这种动态行为

      只有在未指定插入列表中的列时,默认约束才起作用

      假设我有一张这样的桌子

      CREATE TABLE MyInfo
      (
          Id INT IDENTITY(1,1),
          Nm VARCHAR(50),
          MyDate DATE DEFAULT(GETDATE())
      )
      
      我这样指定值

      INSERT INTO MyInfo
      (
          Nm,
          MyDate
      )
      SELECT
          Nm = 'A',
          MyDate = '02/23/93'
      UNION
      SELECT
          Nm = 'B',
          MyDate = NULL
      
      结果是这样的

      INSERT INTO MyInfo
      (
          Nm,
          MyDate
      )
      SELECT
          Nm = 'A',
          MyDate = '02/23/93'
      UNION
      SELECT
          Nm = 'B',
          MyDate = NULL
      

      现在我插入一行而不指定
      MyDate

      INSERT INTO MyInfo
      (
          Nm
      )
      VALUES('C')
      
      并且MyDate由默认值填充

      默认约束用于在插入列表中未指定列时指定值。如果需要在插入值为NULL或空时设置默认值,请尝试使用触发器

      当我为新行单击+时,它不会显示在窗体上

      DataGridView
      对数据库表中的默认值一无所知。因此,必须在
      DataGridView
      中输入默认值

      或者,如果正在使用数据绑定,则可以在
      数据表中使用默认值


      当从数据库中添加一行时,默认值就存在了

      这是对的,因为在数据库中它们是被设置的


      通过表单添加新行,保留默认值为空、已保存、重新打开且没有默认值的字段

      如果按以下方式将数据插入数据库:

      insert into SomeTable ('Retired') values ('');
      
      insert into SomeTable ('Last Mileage') values (0);
      
      然后将不使用默认值。如果没有设置空值,我可以很有可能地假设此时您从DataGridView传递空值。这是错误的

      如果按以下方式将数据插入数据库:

      insert into SomeTable ('Retired') values ('');
      
      insert into SomeTable ('Last Mileage') values (0);
      
      然后,将使用
      Retired
      列的默认值。应该如此

      因此,您必须正确地设计
      Insert
      语句,完全忽略那些应在数据库本身中用作默认值的列



      总结。您必须在
      DataGridView
      /
      DataTable
      中填充默认值,或者动态构造
      Insert
      语句,完全忽略未指定的值。

      您的意思是保存时数据库中没有设置默认值,还是在保存前表单应用程序中没有显示默认值?@SBFrancies在我单击+时表单上没有显示新行如果在未指定行的情况下插入,数据库中将显示默认值该列的值。如果您想在表单中自动设置它,我认为您必须在代码中手动设置。在表单上创建新行时,它不能自动拉入文本框吗?@Matt您可以通过编程方式添加它,但SQL Server中使用的默认值选项,如果此列中没有提供值,则指定一个值。我在一个类似的表单上收到一个错误,即当我单击“添加新”时,employeeID不能为空。它没有
      xxsource.EndEdit()在it中,对employeeID的约束是什么?请记住执行此步骤
      在表单设计器上,单击BindingNavigator,在“属性”窗口中,将AddNewItem属性设置为(无)
      这是我错过的步骤:)我将把它写下来!