自己写了一个服务器程序,需要注册和登陆,数据库想用存储过程,用户名和密码区分大小写。数据库是 sqlserver2000。thxs!!!!登陆的搞定了
--0-成功 1-用户名密码错误, -1-其他错误
CREATE          PROCEDURE UserLogin 
@User_Name nvarchar(16),
@Hash_Pass nvarchar(16),
@User_ID int output
ASset @User_ID = -1
declare @num as int 
select @User_ID = UserID from BaseInfo where UserName = @UserName and HashPass = @Hash_Pass
if @@error <> 0
begin
return -1
end
if @User_ID = -1
begin
return 2
end
--已经正确了
return 0
Go
注册的怎么写?

解决方案 »

  1.   

    CREATE PROCEDURE Userregister
    @User_Name nvarchar(16),
    @Hash_Pass nvarchar(16),
    @Status int output
    AS
    BEGIN
        SET @Status=-1
        
        IF exists(select 1 from BaseInfo where UserName=@UserName)
            return
        
        insert into BaseInfo(UserName,HashPass) values(@UserName,@Hash_Pass)
        
        if @@error <> 0
        begin
            SET @Status=-2
            return
        end
        
        set @Status=0
        returnEND
    GO
      

  2.   

    CREATE PROCEDURE Userregister
    @User_Name nvarchar(16),
    @Hash_Pass nvarchar(16),
    @Status int output
    AS
    BEGIN
        SET @Status=-1
        
        --已经存在相同的用户名,返回-1
        IF exists(select 1 from BaseInfo where UserName=@UserName)
            return
        
        
        insert into BaseInfo(UserName,HashPass) values(@UserName,@Hash_Pass)
        
        --insert操作失败,返回-2
        if @@error <> 0
        begin
            SET @Status=-2
            return
        end
        
        --注册操作成功,返回0
        set @Status=0
        return
    END
    GO用户注册数据的字段比较多,在存储过程参数中加上即可;在此基础上还可以做鞋其他的校验。
      

  3.   

    --区分大小写 
    CREATE  PROCEDURE UserLogin 
      @User_Name nvarchar(16),
      @Hash_Pass nvarchar(16),
      @User_ID int output
    AS 
    set @User_ID = -1
     
     Select @User_ID = UserID from BaseInfo 
     where UserName = @UserName and cast(HashPass as varbinary)=cast(@Hash_Pass as varbinary)
    if @@error <> 0 
      return -1 if @User_ID = -1 
      return 2  --已经正确了
    return 0
    Go
      

  4.   

    要区分大小写怎么办?
    ------------------------------------
    cast(字段 as varbinary(40))
      

  5.   

    思路:
    查找用户名是否存在?存在---已经注册,提示换名--注册失败
    不存在  插入数据库用户表内
    if exists( select 1 from 用户表 where username = '注册名')
    begin
      已经注册的用户名
    end
    else
    begin
       进行注册
    end;