ADO之密码验证--3次错误就锁定
2014-04-02 00:16
274 查看
这个程序是那vs2010下写的,C#语言。数据库是sql server 2008
首先在数据库中新建一个数据库Test1,在数据库中新建一个表用来保存用户名和密码USERINFO,
添加几条数据
然后,在VS里做个简单界面,给控件绑定变量tb_UserID和tb_Password
最后响应登录按钮btn_Login_Click()
这里总结一下数据库连接的一般过程
第一步,建立连接使用SqlConnection,参数可以为空,也可以为一个字符串。
DataSource 表示数据库的地址,如果是本机的话可以用"."或者127.0.0.1,其他的就指定一个IP地址。
Initial Catalog 表示要连接的数据库名,
User ID 指定用户名,
Password指定密码
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Test1;User ID=sa;Password=123456")
第二步,连接成功后就可以打开数据库里,Open()方法使用 ConnectionString 所指定的属性设置打开数据库连接。
conn.Open();
第三步,对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,使用 SqlCommand类来指定要执行的语句。
SqlCommand cmd = conn.CreateCommand();//创建一个命令用于执行查询
cmd.CommandText = "select ErrorTimes from USERINFO where UserID=@user";//这个就是要执行的sql语句
cmd.Parameters.Add(new SqlParameter("@user", tb_UserID.Text));//这个给参数赋值,可以指定多个参数
最后执行语句 int resoult = (int)cmd.ExecuteScalar();
ExecuteScalar();//返回结果集的第一行第一列的数据
ExecuteNonQuery();//执行语句但是不查询
当然上面那个例子有很多需要改进的地方,继续学习。
首先在数据库中新建一个数据库Test1,在数据库中新建一个表用来保存用户名和密码USERINFO,
CREATE TABLE USERINFO ( UserID varchar(12) NOT NULL PRIMARY KEY, Password varchar(12) NOT NULL , ErrorTimes int NULL, )
ErrorTimes就是用来判断用户输入密码错误的次数的,每错一次加一
添加几条数据
INSERT INTO USERINFO VALUES('song','123456') INSERT INTO USERINFO VALUES('wang','123456')
然后,在VS里做个简单界面,给控件绑定变量tb_UserID和tb_Password
最后响应登录按钮btn_Login_Click()
private void btn_Login_Click(object sender, RoutedEventArgs e) { //从控件获取数据 string userid = tb_UserID.Text; string password = tb_Password.Text; if (userid != "" && password != "")//用户名和密码全不为空 { using (SqlConnection conn = new SqlConnection( "Data Source=.;Initial Catalog=Test1;User ID=sa;Password=123456")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { //查找用户名是否存在 cmd.CommandText = "select ErrorTimes from USERINFO where UserID=@user"; cmd.Parameters.Add(new SqlParameter("@user", tb_UserID.Text));// int resoult = -1; try { resoult = (int)cmd.ExecuteScalar();//如果用户名不存在就抛出异常 } catch (Exception ex) { if (ex is SqlException) { MessageBox.Show("用户不存在,请重试"); } } if (resoult >= 3)//输入密码错误超过3次 { MessageBox.Show("你的帐户已锁定,请找管理员解锁"); } else if (resoult >= 0 && resoult < 3) { cmd.CommandText = "select Password from USERINFO where UserID=@user"; string pass = (string)cmd.ExecuteScalar(); if (pass.Equals(password))//比较两个字符串是否相等 { MessageBox.Show("登录成功"); } else { MessageBox.Show("密码错误,请重试"); cmd.CommandText = "update USERINFO set ErrorTimes = ErrorTimes+1 where UserID=@user";//更新数据 cmd.ExecuteNonQuery(); } } else if (resoult == -1) { MessageBox.Show("用户不存在,请重试"); } //MessageBox.Show(resoult.ToString()); } } } else if (userid == "") { MessageBox.Show("用户名不能为空"); } else { MessageBox.Show("密码不能为空"); } }
这里总结一下数据库连接的一般过程
第一步,建立连接使用SqlConnection,参数可以为空,也可以为一个字符串。
DataSource 表示数据库的地址,如果是本机的话可以用"."或者127.0.0.1,其他的就指定一个IP地址。
Initial Catalog 表示要连接的数据库名,
User ID 指定用户名,
Password指定密码
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Test1;User ID=sa;Password=123456")
第二步,连接成功后就可以打开数据库里,Open()方法使用 ConnectionString 所指定的属性设置打开数据库连接。
conn.Open();
第三步,对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,使用 SqlCommand类来指定要执行的语句。
SqlCommand cmd = conn.CreateCommand();//创建一个命令用于执行查询
cmd.CommandText = "select ErrorTimes from USERINFO where UserID=@user";//这个就是要执行的sql语句
cmd.Parameters.Add(new SqlParameter("@user", tb_UserID.Text));//这个给参数赋值,可以指定多个参数
最后执行语句 int resoult = (int)cmd.ExecuteScalar();
ExecuteScalar();//返回结果集的第一行第一列的数据
ExecuteNonQuery();//执行语句但是不查询
当然上面那个例子有很多需要改进的地方,继续学习。
相关文章推荐
- ADO之密码验证--3次错误就锁定『改进』
- python用户登录,密码错误3次则锁定
- 06.密码错误3次锁定
- 实现用户名密码登陆,输入错误3次后锁定用户
- Oracle密码错误次数过多账号锁定的问题(推荐)
- mysql中Access denied for user 'root'@'localhost'错误,跳过验证更改默认密码
- Ubuntu登录Windows Server 2008r2 密码总是错误与NLA验证
- python密码错误三次锁定(实例讲解)
- 访问域服务器修改密码,报“未知的身份验证机制”的错误搞定!
- 安全登录一天内连续输入密码错误3次,第二天才能登录
- Ubuntu 锁定屏幕后即使输入正确密码也被提示密码错误导致无法解锁 问题的解决
- tp框架中三次登陆密码错误之后锁定
- 连续输入密码错误3次,第二天才能登录
- tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
- 登录错误多次密码锁定账户一定时间之数据库建表参考
- java登录程序用户密码5分钟内输错3次锁定用户账号一天的实现
- 登录安全性 一天内连续输入密码错误3次,第二天才能登录(过了当天凌晨24点),实现原理
- 模拟ATM取款机的三次密码校验,当天达到3次输入密码错误, 则提示“账号被冻结”,其他情况则提示还有多少次输入机会
- js密码框验证加错误显示