添加新记录时,Visual Studio SQL默认值未在Windows窗体上显示

时间:2018-01-06 20:33:18

标签: c# sql sql-server visual-studio default-value

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

enter image description here

该表已连接到我的C#项目(在同一解决方案中)并且处理正常,但是当通过Windows窗体创建新行时,默认值不会出现。

enter image description here

评论问题的信息:

  • 当我点击+换新行时,它不会出现在表单上。
  • 当从数据库添加行时,默认值就在那里。
  • 通过表单添加了一个新行,将默认值为空的字段留空,保存,重新打开,没有默认值。

4 个答案:

答案 0 :(得分:3)

基于此W3Schools Tutorials

  

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

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

您可以save these default values in the application Settings并在添加新行时使用

AddNewItem

如果在Visual Studio中定义默认值时遇到问题,请尝试使用SQL查询添加默认约束:

(none)

更新1

在表单设计器上,单击BindingNavigator,在“属性”窗口中将bindingNavigatorAddNewItem_Click属性设置为private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) { vehiclesBindingSource.AddNew(); Textbox1.Text = Properties.Settings.Default.Text1default; };

尝试将以下代码添加到{{1}}事件

{{1}}

答案 1 :(得分:2)

  

当我点击+换新行时,它不会出现在表单上。

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

或者,如果您使用的是数据绑定,则可以DataTable中的specify默认值。


  

当从数据库添加行时,默认值就在那里。

没错,因为在数据库中它们已被设置。


  

通过表单添加了一个新行,将默认值为空的字段留空,保存,重新打开,没有默认值。

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

insert into SomeTable ('Retired') values ('');

然后将不使用默认值。我很可能会假设您从DataGridView传递空值,如果它们未设置。这是错的!

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

insert into SomeTable ('Last Mileage') values (0);

然后将使用Retired列的默认值。应该是这样。

因此,您必须正确设计Insert语句,完全省略那些应该使用数据库本身默认值的列。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

默认约束仅在未在“插入列表”中指定“列”时才起作用。

假设我有一个像这样的表

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

结果将是这样的

enter image description here

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

INSERT INTO MyInfo
(
    Nm
)
VALUES('C')

MyDate填充了默认值

enter image description here

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