C# 检查重复的电子邮件
我正在将记录插入数据库,并检查是否有重复的电子邮件id,但问题是电子邮件已经存在,显示消息,并且记录也将插入数据库 我的BALC# 检查重复的电子邮件,c#,asp.net,C#,Asp.net,我正在将记录插入数据库,并检查是否有重复的电子邮件id,但问题是电子邮件已经存在,显示消息,并且记录也将插入数据库 我的BAL public int insert(string firstname,string lastname,DateTime dob,string gender,string mobile,string country,string state,string email,string password) { ProfileMasterDAL dal=ne
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;
}
我的用户界面
您需要在BAL层而不是UI层进行检查。在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
建议
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
您的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
比较我的sql语句和你的sql语句。我没有在您的中设置开始/结束。请在此处共享您的完整存储过程,编辑您的问题。结果=pmBLL.insert(名字、姓氏、出生日期、性别、手机、国家/地区、州、电子邮件、密码);这里我得到的结果是-1,当记录被插入时,我不知道为什么?存储的进程现在看起来更好了。如果电子邮件已存在,则存储的进程应返回0,否则应插入新记录并返回1。你能更好地解释这个错误吗,也就是说,你期望发生什么?实际上发生了什么?如果你收到一个错误,认为电子邮件已经存在,也许它已经存在了。您的原始帖子显示了即使它已经存在也会尝试插入它的代码。Begin和end将阻止此SP尝试插入重复项。此外,您的代码调用pmBLL.insert,但您的SP为Insertreg。您不会显示任何将insert映射到SP的代码。
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