C#获得刚刚插入记录的自增ID

时间:2022-12-28 21:47:39

        看着别人为了获得新插入记录的自增ID而给表增加一个GUID的字段就揪心,自己能实现是好事(如果不能变更表呢),实现完到网络搜搜别人的解决方案不是更好。@@IDENTITY是我常用的解决方案(这是SQLServer数据库才有的),代码如下:

private static string AddRecordReturnNewID()
{
string sql = @"insert into [dbo].[Test1122] values(@Name,@Age);
select @ID=@@IDENTITY;";
SqlParameter[] para =
{
new SqlParameter("@Name", SqlDbType.NVarChar,20),
new SqlParameter("@Age", SqlDbType.Int),
new SqlParameter("@ID", SqlDbType.Int)
};
para[0].Value = "Nova";
para[1].Value = 24;
para[2].Direction = ParameterDirection.Output;
DBHelper.ExecuteNonData(sql, para);
return para[2].Value.ToString();
}
        其中表结构如下:

create table Test1122(
ID int identity(1,1) primary key not null,
Name nvarchar(20) not null,
Age int not null)
        另外ParameterDirection是自带的枚举,不需要额外定义,用来指定查询内的有关 DataSet 的参数的类型。枚举定义如下:

public enum ParameterDirection
{
/// <summary>
/// 参数是输入参数
/// </summary>
Input = 1,
/// <summary>
/// 参数是输出参数
/// </summary>
Output = 2,
/// <summary>
/// 参数既能输入,也能输出
/// </summary>
InputOutput = 3,
/// <summary>
/// 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值
/// </summary>
ReturnValue = 6,
}
        此文比较简单,希望对不了解者有些帮助。