在ADO.NET中,使用ExecuteScalar方法执行插入或更新命令将返回最近插入或更新行的受影响行数。但是,由于在执行插入命令时没有直接返回最新记录的ID,因此需要进行额外的步骤来获取此ID。
以下是一个示例,可以解决这个问题:
使用SCOPE_IDENTITY()函数返回插入的记录的ID。以下是一个使用SqlCommand类执行插入命令并返回添加的记录ID的示例。
string connectionString = "your_connection_string_here";
using (SqlConnection connection = new SqlConnection(connectionString))
{
string insertSql = "INSERT INTO YourTable (ColumnName) VALUES (@Value); SELECT SCOPE_IDENTITY()";
using (SqlCommand command = new SqlCommand(insertSql, connection))
{
command.Parameters.AddWithValue("@Value", "YourValue");
connection.Open();
int id = Convert.ToInt32(command.ExecuteScalar());
connection.Close();
Console.WriteLine("New record has been inserted with ID: " + id);
}
}
在上面的示例中,插入命令执行后,SCOPE_IDENTITY()函数将返回新记录的ID。使用ExecuteScalar方法获取此ID,然后可以输出它或者在需要的地方使用它。
此解决方法也适用于使用其他插入命令(如INSERT INTO ... OUTPUT INSERTED.Id)获取插入记录的ID。
请注意,SCOPE_IDENTITY()函数仅返回由当前会话插入的最后一个标识值。如果插入操作被触发器、存储过程等影响,则结果可能不正确。在这种情况下,可以考虑使用IDENT_CURRENT或@@IDENTITY函数。