用md5加密密碼,並判斷使用者id是不是已有 (轉)

amyz發表於2007-08-17
用md5加密密碼,並判斷使用者id是不是已有 (轉)[@more@]

 

首先,建立一個User表,欄位3個:id,Userid和Pass,型別分別為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)
@User_id = @@ntity --得到剛插入紀錄的id,注意這裡是欄位id的值,不是userid欄位的值
-----------------------------------------------------
根據@User_id的返回值來判斷(如果紀錄增加成功就會返回當前的id號,SELECT @User_id = @@Identity。不成功就說明,當前要增加的userid在中有重複值,將得不到新的id號。)下面的程式碼就是根據這點來判斷的。
--------------------------
後臺程式碼:
  Import System.Text
  Import System.Data.Client
  Import System.Security.Cryptography  '類
'新增使用者
Sub ADDUser(byval struserid as string,byval strpassword as string)
  '1. 建立連線
  dim strConnString as String
  '連線字元請根據實際情況修改
  strConnString= "Data =.;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", SqlType.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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962960/,如需轉載,請註明出處,否則將追究法律責任。

相關文章