这个程序是那vs2010下写的,C#语言。数据库是sql server 2008

首先在数据库中新建一个数据库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','')
INSERT INTO USERINFO
VALUES('wang','')

然后,在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 = -;
try {
resoult = (int)cmd.ExecuteScalar();//如果用户名不存在就抛出异常
}
catch (Exception ex) {
if (ex is SqlException)
{
MessageBox.Show("用户不存在,请重试");
}
} if (resoult >= )//输入密码错误超过3次
{
MessageBox.Show("你的帐户已锁定,请找管理员解锁");
}
else if (resoult >= && resoult < )
{
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 == -)
{
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次错误就锁定的更多相关文章

  1. ADO之密码验证--3次错误就锁定『改进』

    这里使用了SqlHelper,简化程序 自己写一个SqlHelper,把数据库的连接等都写到里面去. 首先把连接字符串添加到配置文件里去,右键解决方案-->添加新建项-->选择应用程序配置 ...

  2. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  3. WCF 安全性之 自定义用户名密码验证

    案例下载 http://download.csdn.net/detail/woxpp/4113172 客户端调用代码 通过代理类 代理生成 参见 http://www.cnblogs.com/woxp ...

  4. wordpress密码生成与登录密码验证

    一.研究wordpress时wordpess的密码密码生成与登录密码验证方式很重要 WordPress密码已成为整合的首要目标,如何征服整合,就得了解WordPress密码算法. WordPress系 ...

  5. [c/c++] programming之路(24)、字符串(五)——字符串插入,字符串转整数,删除字符,密码验证,注意事项

    1.将字符串插入到某位置(原字符串“hello yincheng hello cpp hello linux”,查找cpp,找到后在cpp的后面插入字符串“hello c”) 需要用到strstr字符 ...

  6. 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form

    如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form本文地址 :CodeGo.net/5175478/ ----------------------- ...

  7. WCF服务安全控制之netTcpBinding的用户名密码验证【转】

    选择netTcpBinding WCF的绑定方式比较多,常用的大体有四种: wsHttpBinding basicHttpBinding netTcpBinding wsDualHttpBinding ...

  8. WCF用户名密码验证方式

    WCF使用用户名密码验证 服务契约 namespace WCFUserNameConstract { [ServiceContract] public interface IWcfContract { ...

  9. 第一百五十节,封装库--JavaScript,表单验证--密码验证

    封装库--JavaScript,表单验证--密码验证 效果图 html <div id="reg"> <h2 class="tuo">& ...

随机推荐

  1. 【转】【C++】【MFC】各种数据类型大小

    *原文地址:http://blog.csdn.net/xuexiacm/article/details/8122267 /*运行结果分析: 以上结果已经很明白了,一下补充说明几点: 概念.整型:表示整 ...

  2. TestNG并发测试包

    https://www.yiibai.com/testng/basic-annotations.html

  3. 进入Windows之前发出警告

    实现效果: 知识运用: 通过注册表中HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\子键下的LegalNoticeCaption ...

  4. python基础一 day17 复习

    # 迭代器# 生成器进阶 # 内置函数 # 55个 # 带key的 max min filter map sorted # 思维导图上红色和黄色方法必须会用 # 匿名函数 # lambda 参数,参数 ...

  5. Jquery LigerUI

    http://www.ligerui.com/index.aspx http://api.ligerui.com/ 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下 ...

  6. C#图片上传获取二进制流保存至AD

    <form id="form1" runat="server"> <div> <asp:FileUpload ID="F ...

  7. 转+更新 Graphviz 教程,例子+ 高级应用 写代码,编程绘制架构图(分层拓扑图) 转自官网

    1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具. 它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”. Graphviz提供了dot语言来 ...

  8. 把网上图片下载到本地的java工具类

    package com.swift; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...

  9. 1037: [ZJOI2008]生日聚会Party

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3121  Solved: 1858[Submit][Status][Discuss] Descript ...

  10. Uva 长城守卫——1335 - Beijing Guards

    二分查找+一定的技巧 #include<iostream> using namespace std; +; int n,r[maxn],Left[maxn],Right[maxn];//因 ...