0

我正在将记录插入数据库并且正在检查重复的电子邮件 ID,但问题是电子邮件已存在消息显示并且记录也被插入数据库

我的巴尔

 public int insert(string firstname,string lastname,DateTime dob,string gender,string mobile,string country,string state,string email,string password)
    {
      ProfileMasterDAL dal=new ProfileMasterDAL();
      try
      {
          return ProfileMasterDAL.Insert(firstname, lastname, dob, gender, mobile, country, state, email, password);
      }
      catch (Exception ex)
      {

          throw ex;
      }

我的用户界面

 try
        {

            chk = pmBLL.insert(firstname, lastname, dob, gender, mobile, country, state, email, password);

            if (chk >= 0)
            {
                Response.Write("<script language='javascript'>alert('Email already exists');</script>");
            }
            else
            {
                result = pmBLL.insert(firstname, lastname, dob, gender, mobile, country, state, email, password);
                if (result > 0)
                {
                    Session["username"] = TextBox1.Text;

我的插入存储过程

 ALTER procedure [dbo].[Insertreg]

( @id int output,@FirstName varchar (50),@LastName varchar(50) ,@Dob datetime,
@Gender varchar(20) ,@MobileNo nchar(10) ,@Country varchar(50) ,
 @State varchar (50),@EmailId varchar (50),@Password nchar (15),@result int output

)
 as 
 begin

if exists(select EmailId from Profile_Master where EmailId=@EmailId)
set @result=0
else
begin
set @result=1

insert into                                                                                            Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password)
 values 
(@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password)
 set @id=SCOPE_IDENTITY()
 return
 end 
 end
4

4 回答 4

1

对 else 语句使用 begin 和 end

if exists(select @EmailId from Profile_Master where EmailId=@EmailId) 
    set @result=0 
else 
begin
    set @result=1 

    insert into Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password) 
      values (@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password) 
    set @id=SCOPE_IDENTITY() 
end
于 2012-08-13T09:59:36.943 回答
1

建议

1)在电子邮件ID上制作唯一键

2) 使用低于 SP

 ALTER procedure [dbo].[Insertreg]

 ( @id int output,@FirstName varchar (50),@LastName varchar(50) ,@Dob datetime,
@Gender varchar(20) ,@MobileNo nchar(10) ,@Country varchar(50) ,
 @State varchar (50),@EmailId varchar (50),@Password nchar (15),@result int output

 )
 as 
 begin

   declare @iCount int
    select @iCount = count(EmailId) from Profile_Master where EmailId=@EmailId

  SET @result = @iCount

  if @result > 0
 BEGIN
    set @result=0
    return
     END
    ELSE
     BEGIN
     set @result=1

INSERT INTO        Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password)
 values 
(@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password)
 set @id=SCOPE_IDENTITY()
 return @id
 end 
    end
于 2012-08-13T10:00:27.080 回答
0

您需要在 BAL 层而不是 UI 层检查这一点。

于 2012-08-13T09:59:34.103 回答
0

你的 sql 查询

insert into                                                                                           Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password)
 values 
(@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password)
 set @id=SCOPE_IDENTITY()

与条件分开放置任何条件使用开始和结束以适当的方式你会得到解决方案

Begin
if exists(select @EmailId from Profile_Master where EmailId=@EmailId)
set @result=0
else
 Begin set @result=1

insert into                                                                                           Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password)
 values 
(@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password)
 set @id=SCOPE_IDENTITY()
End
End
于 2012-08-13T10:06:33.107 回答