用md5加密密码,并判断用户id是不是已有

类别:.NET开发 点击:0 评论:0 推荐:

 

首先,创建一个User表,字段3个:id,Userid和Password,类型分别为int(4),varchar(25)和binary(16).把id设置为自动增加型主键。userid设置为唯一型约束
 
---------------------------------------------------
--添加用户调用的存储过程
CREATE Procedure Sp_UserAdd
    (
        @Userid    varchar(20),
        @Password   binary(16),
        @User_id int OUTPUT
    )
    AS
    INSERT INTO User(Userid,Password)VALUES(@Userid,@Password)
SELECT @User_id = @@Identity --得到刚插入纪录的id,注意这里是字段id的值,不是userid字段的值
-----------------------------------------------------
程序根据@User_id的返回值来判断(如果纪录增加成功就会返回当前的id号,SELECT @User_id = @@Identity。不成功就说明,当前要增加的userid在数据库中有重复值,将得不到新的id号。)下面的代码就是根据这点来判断的。
--------------------------
后台代码:
  Import System.Text
  Import System.Data.SqlClient
  Import System.Security.Cryptography  '加密类
'添加用户函数
Sub ADDUser(byval struserid as string,byval strpassword as string)
      '1. 创建连接
      dim strConnString as String
      '连接字符请根据实际情况修改
      strConnString= "Data Source=.;Initial Catalog=test;User Id=sa;Password=;"
      Dim objConn as New SqlConnection(strConnString)
     
      '2. 创建Command对象
      Dim objCmd as New SqlCommand("Sp_UserAdd",strConnString)
      objCmd.CommandType = CommandType.StoredProcedure
      '3. 创建参数
      '创建输入参数userid

      Dim paramUserid as SqlParameter
      paramUserid = New SqlParameter("@Userid", SqlDbType.VarChar, 25)
      paramUserid.Value = struserid
      objCmd.Parameters.Add(paramUserid)
      '加密密码字段
      Dim md5Hasher as New MD5CryptoServiceProvider()  
      Dim hashedBytes as Byte()  
      Dim encoder as New UTF8Encoding()
      hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(strpassword))
      '创建输入参数Password
      Dim parampassword as SqlParameter
      parampassword = New SqlParameter("@Password", SqlDbType.Binary, 16)
      parampassword.Value = hashedBytes
      objCmd.Parameters.Add(parampassword)
      '创建输出参数Pkid
      Dim paramPkid as SqlParameter
      paramPkid = New SqlParameter("@Pkid", SqlDbType.int, 4)
      paramPkid.Direction = ParameterDirection.Output
      objCmd.Parameters.Add(paramPkid)
   try
      objConn.Open()
      objCmd.ExecuteNonQuery()
      objConn.Close()
      '得到存储过程的返回值
      dim user_Id as integer= paramPkid.Value
      return user_Id.ToString
   catch
      objConn.Close()
      return String.Empty  '返回空值
   end try
end sub
'在需要添加用户的事件中
dim struser_id as string=Adduser(用户名,密码值)
if not struser_id="" then  '判断过程Adduser返回值
   '不为空,无相同的用户名
   '你需要处理的代码
else
   '如果为空,则表示有数据库里有相同的用户名
   '你想显示的错误信息或处理代码
end if

本文地址:http://com.8s8s.com/it/it45248.htm