2012-08-13 100 views
0

我插入記錄到數據庫中,我檢查了重複的電子郵件ID,但事情是電子郵件已經存在,則顯示的信息並記錄也越來越插入DB檢查是否存在重複的電子郵件

我BAL

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; 
     } 

我的UI

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 [email protected]) 
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 
+0

的存儲過程現在看起來更好。如果電子郵件已存在,則存儲的proc應該返回0,否則應該插入一條新記錄並返回1.您能否更好地解釋錯誤,即您期望發生什麼?以及實際發生了什麼? – Les 2012-08-13 12:02:13

+0

如果您收到電子郵件已存在的錯誤,可能它已存在。您的原始帖子顯示的代碼會嘗試插入它,即使它已經存在。開始和結束將防止此SP嘗試插入副本。 – Les 2012-08-13 12:03:50

+0

此外,您的代碼調用pmBLL.Insert,但您的SP是Insertreg。您不顯示任何代碼將插入映射到SP。 – Les 2012-08-13 12:06:32

回答

1

使用一個開始和結束你的else語句

if exists(select @EmailId from Profile_Master where [email protected]) 
    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 
+0

開始和結束語句已經存在.... – 2012-08-13 10:01:11

+0

將我的sql語句與您的比較。我不會在你的開始/結束。 – Les 2012-08-13 10:06:44

+0

我已經發布了我的存儲過程檢查一次.. – 2012-08-13 10:46:51

0

您需要在BAL層檢查,而不是UI層。

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 [email protected] 

    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 
+0

還是一樣的錯誤.... – 2012-08-13 10:08:59

+0

可以請你在這裏分享你的完整的存儲過程,編輯你的問題。 – 2012-08-13 10:31:26

+0

我已經發布了我的完整存儲過程檢查一次... – 2012-08-13 10:41:28

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() 

爲條件sepreate把它放在任何條件下使用,並開始以適當的方式結束時,您將得到解決

Begin 
if exists(select @EmailId from Profile_Master where [email protected]) 
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 
+0

但無法顯示消息電子郵件已存在... – 2012-08-13 10:14:07

+0

result = pmBLL.insert(firstname,lastname ,dob,gender,mobile,country,state,email,password);這裏我得到的結果爲-1當插入記錄我不知道爲什麼? – 2012-08-13 10:31:42

相關問題