在这个问答内容中,我们讨论了使用 INSERT...OUTPUT.inserted 语句时,SqlDataReader.RecordsAffected 返回 -1 的问题。这个问题可能是由于 INSERT...OUTPUT 语句的特殊性导致的。
INSERT...OUTPUT 语句是一种 T-SQL 语句,它允许在插入数据时同时返回插入的数据。这个语句的语法如下:
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 语句的特殊性。在这种情况下,可以使用以下方法来解决问题:
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// 读取返回的数据
}
}
int rowsAffected = command.ExecuteNonQuery();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// 读取返回的数据
}
}
总之,在使用 INSERT...OUTPUT.inserted 时,如果 SqlDataReader.RecordsAffected 返回 -1,可以使用 SqlDataReader 对象来读取返回的数据,而不是使用 SqlDataReader.RecordsAffected 属性。
领取专属 10元无门槛券
手把手带您无忧上云