首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 INSERT...OUTPUT.inserted 时,SqlDataReader.RecordsAffected 错误地返回 -1

在这个问答内容中,我们讨论了使用 INSERT...OUTPUT.inserted 语句时,SqlDataReader.RecordsAffected 返回 -1 的问题。这个问题可能是由于 INSERT...OUTPUT 语句的特殊性导致的。

INSERT...OUTPUT 语句是一种 T-SQL 语句,它允许在插入数据时同时返回插入的数据。这个语句的语法如下:

代码语言:txt
复制
INSERT INTO table_name (column1, column2, ...)
OUTPUT inserted.column1, inserted.column2, ...
INTO @table_variable
VALUES (value1, value2, ...)

在这个语句中,INSERT 子句用于插入数据,而 OUTPUT 子句用于返回插入的数据。在这个问答中,我们使用 SqlDataReader 对象来读取返回的数据。

SqlDataReader.RecordsAffected 属性用于获取受影响的行数。在这个问答中,该属性返回 -1,这可能是因为 INSERT...OUTPUT 语句的特殊性。在这种情况下,可以使用以下方法来解决问题:

  1. 使用 SqlDataReader 对象来读取返回的数据,而不是使用 SqlDataReader.RecordsAffected 属性。
代码语言:csharp
复制
using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        // 读取返回的数据
    }
}
  1. 如果需要获取受影响的行数,可以使用 SqlCommand.ExecuteNonQuery 方法来执行 INSERT 子句,然后使用 SqlDataReader 对象来读取返回的数据。
代码语言:csharp
复制
int rowsAffected = command.ExecuteNonQuery();

using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        // 读取返回的数据
    }
}

总之,在使用 INSERT...OUTPUT.inserted 时,如果 SqlDataReader.RecordsAffected 返回 -1,可以使用 SqlDataReader 对象来读取返回的数据,而不是使用 SqlDataReader.RecordsAffected 属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券