日期:2014-05-18  浏览次数:20727 次

关于注册用户同名问题
在做用户注册,如果数据库有用户同名,就提示用户,如果用sql语句怎样写?
"insert into customer(cname,cpw,csex,cqq,cmail,caddress,chead,cinstroduce) values('"+cname+"','"+cpw+"','"+csex+"','"+cqq+"','"+cmail+"','"+caddress+"','"+chead+"','"+cinstroduce+");这句可以先在sql判断没有同名才插入吗?

------解决方案--------------------
楼上的可以实现你的要求,但最好用SQL先判断是否有重名
SQL code

"select count(*) from customer where cname='"+cname+"'"

------解决方案--------------------
使用存储过程

create proc InsertUsers
@cname varchar(10),
--...其他参数
as
IF exists (SELECT 1 FROM customer WHERE cname = @cname)
return -1
else
insert into customer(cname,cpw,csex,cqq,cmail,caddress,chead,cinstroduce) values
(@cname,@cpw,@csex,@cqq,@cmail,@caddress,@chead,@cinstroduce)
------解决方案--------------------
可以插入前先判断
select count(*) from 用户表 where 用户名=注册的用户名
if 返回值>0
注册失败,该用户已存在
else
insert

------解决方案--------------------
用户名列设置唯一索引
try
{
insert
}
catch(Exception e)
{
用户名忆存在
}
finally
{
关闭连接
}
这样有一个缺点
如果是注册失败
都是提示用户名已存在
确保程序没问题
这种方法还是可行的
------解决方案--------------------
SQL code

IF EXISTS
(
    SELECT Name FROM Admin WHERE Name=@Name
)
RETURN 1
ELSE
    INSERT INTO Admin (Name) VALUES (@Name)