首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

使用SQL2008数据库,怎么在insert的同时返回标识

2013-07-20 
使用SQL2008数据库,如何在insert的同时返回标识?后台数据库是SQLSERVER 2008,表的一个字段是标识,想知道如

使用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),


        SqlHelper.MakeInParameter(AT + FIELD_MODIFIED_BY, SqlDbType.VarChar, 50, user.ModifiedBy),
        SqlHelper.MakeParameter(AT + FIELD_RETURN_VALUE, SqlDbType.Int, 4, ParameterDirection.Output, 0)
    };

    SqlHelper.ExecuteNonQuery(sqlConnectionString, CommandType.StoredProcedure, PROC_SAVE_USER_PROFILE, p);

    return Convert.ToInt32(p[p.Length - 1].Value);
}



对应的存储过程:
ALTER PROCEDURE [dbo].[USP_Create_UserProfile] 
 @UserProfileId int
,@MemberId nvarchar(50)
,@Email varchar(128)
,@CreatedDate datetime
,@CreatedBy nvarchar(50)
,@ModifiedDate datetime
,@ModifiedBy nvarchar(50)
,@ReturnValue INT OUTPUT
AS
BEGIN
SET @ReturnValue = @UserProfileId

IF NOT EXISTS(SELECT 1 FROM UserProfiles t WHERE t.UserProfileId = @UserProfileId)
BEGIN
INSERT INTO [dbo].[UserProfiles]
   ([MemberId]
   ,[Email]
   ,[CreatedDate]
   ,[CreatedBy]
   ,[ModifiedDate]
   ,[ModifiedBy])
 VALUES
   (@MemberId
   ,@Email
   ,@CreatedDate
   ,@CreatedBy
   ,@ModifiedDate
   ,@ModifiedBy)
   
SET @ReturnValue = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE [dbo].[UserProfiles]
   SET [MemberId] = @MemberId
  ,[Email] = @Email
  ,[CreatedDate] = @CreatedDate
  ,[CreatedBy] = @CreatedBy
  ,[ModifiedDate] = @ModifiedDate
  ,[ModifiedBy] = @ModifiedBy
 WHERE UserProfileId = @UserProfileId
END
END

热点排行