我需要在C#代码插入数据之后从存储过程取scope_identity()
值从存储过程抓取在C#代码SCOPE_IDENTITY值。在3层架构
这里我使用3层架构。请任何人能帮助我
protected void Submit_Click(object sender, EventArgs e)
{
this.CreateUserGroups(strGroupName, strDescription, strGroupType);
}
protected void CreateUserGroups(string strGroupName, string strDescription, string strGroupType)
{
string strReturn = string.Empty;
strReturn = objUser.SaveCreateGroups(strGroupName, strDescription, strGroupType);
}
public string SaveCreateGroups(string strGroupName, string strDescription, string strGroupType)
{
try
{
DataManager.ParamBuilder param = new DataManager.ParamBuilder();
if (strGroupName != string.Empty)
param.AddParam(System.Data.SqlDbType.VarChar, "@c_groupname", strGroupName);
else
param.AddParam(System.Data.SqlDbType.Int, "@c_groupname", DBNull.Value);
if (strDescription != string.Empty)
param.AddParam(System.Data.SqlDbType.VarChar, "@c_description", strDescription);
else
param.AddParam(System.Data.SqlDbType.Int, "@c_description", DBNull.Value);
if (strGroupType != string.Empty)
param.AddParam(System.Data.SqlDbType.Int, "@n_grouptype", strGroupType);
else
param.AddParam(System.Data.SqlDbType.VarChar, "@n_grouptype", DBNull.Value);
String strIsUserExitsInGroup = DataManager.ExecuteScalar("sp_create_user_groups", param.Parameters, true).ToString();
return strIsUserExitsInGroup;
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
}
public static object ExecuteScalar(string procedureNameOrSql, List<SqlParameter> parameters, bool isStoredProcedure)
{
object scalarValue;
using (SqlConnection cn = createConnection())
{
SqlCommand cmd = new SqlCommand(procedureNameOrSql, cn);
if (isStoredProcedure)
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
cmd.Parameters.AddRange(parameters.ToArray());
scalarValue = cmd.ExecuteScalar();
}
return scalarValue;
}
我的存储过程:
CREATE Procedure [dbo].[sp_create_user_groups]
@n_user_group_id int OUTPUT,
@c_groupname varchar(200),
@c_description varchar(200),
@n_grouptype int
As
Declare @IsGroupNameExists int,
@b_active bit
select @IsGroupNameExists = 0
set @b_active = 1
BEGIN
IF exists(select top 1 * from gdt_user_groups where c_group_name = @c_groupname)
BEGIN
select @IsGroupNameExists = 1
END
ELSE
BEGIN
SET NOCOUNT ON;
insert into gdt_user_groups(c_group_name,c_description,n_group_id,b_active,d_modified_dttm,
d_created_dttm)values(@c_groupname,@c_description,@n_grouptype,@b_active,GETDATE(),GETDATE())
select @n_user_group_id = SCOPE_IDENTITY();
select @IsGroupNameExists = 0
END
select @IsGroupNameExists
END
这里究竟在那里我可以获取在C#代码中的SCOPE_IDENTITY值。任何人帮助?
变量'@ n_user_group_id'是存储过程的输出参数。 –
@Niranjan卡拉OK。我怎么能在C#代码中获取该值.Bcoz在这里我在不同的层中使用Sqlcommand,因为它会被其他函数使用,所以我不能在该阶段获取作用域标识的值? – Nirmala
我已经更新了我的答案..检查这个。现在它更加相关 –