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

标签 c# sql-server

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

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

插入成功,但更新失败。如何使用 ExecuteScalar 获取更新的主键?

最佳答案

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

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

INSERT INTO TableName(someFields) VALUES (someValues)
SET @Id = SCOPE_IDENTITY()

如果你使用自增键或者

SET @Id = newid()
INSERT INTO (ID, someFields) VALUES (@id, someValues)

如果您使用 uniqueidentifier 作为键。

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

关于c# - 我可以使用 ExecuteScalar 进行更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3699649/

相关文章:

c# - String.Join 和 String.Split 参数助记符

c# - 如何知道一条线是否与 C# 中的平面相交?

c# - 无法将 TestDriven.Net 与 MSpec 一起使用

sql - 将 Excel 从 Azure Blob 存储导入到 Sql Server 时出现数据截断问题

sql - 连接到与网站 : localhost or ip adress? 相同的服务器上的 SQL Server 数据库

sql-server - 将存储为 NUMERIC 的日期转换为 DATETIME

c# - 使用 Protobuf-net 和 Monotouch for IOS 通过 WCF 序列化 IEnumerable

c# - 带有 viewModel 的嵌套局部 View

sql-server - 具有 ContainsTable 的多列和带有全文索引的 bool 逻辑

sql-server - 将 Microsoft SQL Server 与开源堆栈结合使用的优势