我可以使用 ExecuteScalar 进行更新吗?

Neo*_*Neo 5 c# sql-server

我正在使用 SQL Server 2005 和 C#。我想在向数据库插入记录时获取主键值。

为此,我有一个 C# 方法,可以在其中插入和更新记录。我正在使用ExecuteScalar插入和更新方法。

插入成功,但更新不成功。我怎样才能ExecuteScalar获取更新的主键?

Iva*_*rić 4

一般来说,ExecuteScalar 方法用于返回至少一个数据字段的查询(例如 SELECT 查询的结果)。如果您只想执行某些操作,则应该使用 ExecuteNonQuery 方法。

即使使用 ExecuteNonQuery 方法,您仍然可以在函数完成后读取参数值。例如,您的命令可能类似于:

INSERT INTO TableName(someFields) VALUES (someValues)
SET @Id = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)

如果您使用自动增量键或

SET @Id = newid()
INSERT INTO (ID, someFields) VALUES (@id, someValues)
Run Code Online (Sandbox Code Playgroud)

如果您使用 uniqueidentifier 作为键。

之后,您可以将输出@Id参数添加到命令中,调用ExecuteNonQuery,然后从参数中读取值。