[英]How to insert other values into database in Visual Studio when there is an ID auto incremented
[英]How to save a new record when the id key is auto incremented
我在sql server 2008中创建了一个数据库,并在表中添加了自动增量ID字段
我也在c#.net 2008中开发一个项目
从BindingNavigator中单击“添加新”后,单击“保存数据”时发生问题
例如,我单击“添加新”,填充除id文本(空白ID)以外的所有字段,然后单击“保存数据”,然后发生错误
运行时异常为“ notNullAllowedException:列'id'不允许为null。
但是用户不需要填写此字段,而是必须在保存后从数据库返回
我还设置了id的属性:(c#项目和sql server都)
AutoIncrement = True
AutoIncrementStep = -1 (also I tested 1)
AutoIncrementSeed = -1 (also I tested 1)
没结果。
我该如何处理?
谢谢
不要在您的插入语句中包括标识列。
如果您的陈述是
INSERT INTO MyTable (ID, SomeField, SomeOtherField) VALUES (null, 'SomeValue', 'AnotherValue')
只需将其更改为
INSERT INTO MyTable ( SomeField, SomeOtherField) VALUES ( 'SomeValue', 'AnotherValue')
听起来您有两个问题。
首先,您总是在插入-您使用什么逻辑来决定“保存”是插入还是更新? 我认为是因为您遇到了以下错误:“无法插入显式...”
其次,您需要获取插入时SQL赋予的ID,以便可以将其写入ID字段以进行下一次save = update。 有两种方法可以做到这一点,我更喜欢的方法是使用存储过程进行插入,并传递获取SCOPE_IDENTITY()的OUTPUT参数。 像这样:
CREATE PROC xyz
(
@data...
@NEWID INT OUTPUT
)
AS
... do your INSERT ...
SET @NewID = SCOPE_IDENTITY()
)
仔细检查我的语法-不确定您使用的是哪个版本的SQL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.