.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用md5加密密码,并判断用户id是不是已有

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

首先,创建一个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




相关文章

相关软件