日期:2014-05-17  浏览次数:20433 次

使用SQL2008数据库,如何在insert的同时返回标识?
后台数据库是SQLSERVER 2008,表的一个字段是标识,想知道如何在使用insert插入行的同时返回自动生成的id?具体在ASP.NET中该如何写呢?谢谢!

------解决方案--------------------
在sqlserver中加select identity,获取编号。
------解决方案--------------------
insert into tbldemo values('测试') 
select @@identity

------解决方案--------------------

if object_id('[tb]') is not null drop table [tb]
go 
create table [tb]([ID] int identity(1,1),[列] varchar(1),[内容] int)
insert [tb] select 'A',100
select @@IDENTITY as 返回值

------解决方案--------------------
select @@identity获得自动生成 id
net中,添加一个返回int类型的方法,把这个自动生成的id返回
------解决方案--------------------
数据访问层代码:
/// <summary>
/// 
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public int SaveUserProfile(UserProfile user) {
    SqlParameter[] p = new SqlParameter[] { 
        SqlHelper.MakeInParameter(AT + FILED_USER_PROFILE_ID, SqlDbType.Int, 4, user.UserProfileId),
        SqlHelper.MakeInParameter(AT + FILED_MEMBER_ID, SqlDbType.NVarChar, 50, user.MemberId),
        SqlHelper.MakeInParameter(AT + FILED_EMAIL, SqlDbType.VarChar, 128, user.Email),
        SqlHelper.MakeInParameter(AT + FIELD_CREATED_DATE, SqlDbType.DateTime, 8, user.CreatedDate == DateTime.MinValue ? DateTime.Now : user.CreatedDate),
        SqlHelper.MakeInParameter(AT + FIELD_CREATED_BY, SqlDbType.NVarChar, 50, user.CreatedBy),
        SqlHelper.MakeInParameter(AT + FIELD_MODIFIED_DATE, SqlDbType.DateTime, 8, user.ModifiedDate == DateTime.MinValue ? DateTime.Now : user.ModifiedDate),