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