我在Visual Studio中创建了一个SQL表,并在字段上设置了默认值。
该表已连接到我的C#项目(在同一解决方案中)并且处理正常,但是当通过Windows窗体创建新行时,默认值不会出现。
评论问题的信息:
答案 0 :(得分:3)
如果没有指定其他值,则默认值将添加到所有新记录中。
因此,在将行保存到数据库之前,默认值不会显示,您可以以编程方式添加它,但如果此列中没有提供值,则使用默认值约束来指定值
您可以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
结果将是这样的
现在我插入一行而不指定MyDate
列
INSERT INTO MyInfo
(
Nm
)
VALUES('C')
MyDate填充了默认值
默认约束用于在插入列表中未指定列时分配值。如果您需要的是在插入的值为空或空时设置默认值,请尝试使用触发器