0

DB にレコードを挿入していて、重複する電子メール ID をチェックしていますが、電子メールが既に存在するというメッセージが表示され、レコードも DB に挿入されています。

マイバル

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

これは、UIレイヤーではなく、BALレイヤーで確認する必要があります。

于 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 に答える