2009-12-14 47 views
0

将DataTable更新到SQL Server数据库时,在调用GetErrors()后,出现错误消息“列”PK_Column'不允许为空“() 我不想为PK_Column提供一个值,因为它是数据库中的自动增量主键列。我的插入语句如下所示:DataAdapter Update()需要自动递增主键列的输入参数

INSERT INTO [Order] ([Customer_Id], [OrderTime], [OrderType]) 
VALUES(@Customer_Id, @OrderTime, @OrderType) 
SELECT CAST(SCOPE_IDENTITY() AS int) AS '@PK_Column' 

它在SQL Server Management Studio中按预期工作,所以查询显然不是问题。

我对插入命令有四个参数,一个输出参数(@PK_Column)和三个输入参数(@Customer_Id, @OrderTime, @OrderType)。我发现如果将@PK_Column设置为InputOutput参数,则不会收到错误消息,但PK_Column值不会使用数据库创建的正确值进行更新。

回答

1

尝试

SELECT @PK_Column = SCOPE_IDENTITY() 

这种方式,分配给本地变量@PK_Column,这是拿起作为参数。

当你做... AS '@PK_Column',要创建一个列中的数据集被称为“@PK_Column”,当你想赋值给局部变量/参数@PK_Column

注:... AS @PK_Column将失败,因为这是列别名。你依靠的设置允许'@PK_Column'是一个有效的别名,因为@PK_Column会失败

+0

谢谢,这解决了我的问题。 – phatoni