博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员---登录进阶练习
阅读量:5063 次
发布时间:2019-06-12

本文共 2243 字,大约阅读时间需要 7 分钟。

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

namespace winform1

{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//将错误次数变为零

public void ResetErrorTimes()
{
using (SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;attachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "update T_Users set ErrorTimes=0 where UserName=@UserName";
cmd.Parameters.Add(new SqlParameter("UserName", textBox1.Text));
cmd.ExecuteNonQuery();

}

}
}

//将错误次数加一

public void IncErrorTimes()

{
using (SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;attachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "update T_Users set ErrorTimes=ErrorTimes+1 where UserName=@UserName";
cmd.Parameters.Add(new SqlParameter("UserName", textBox1.Text));
cmd.ExecuteNonQuery();

}

}
}
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;attachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Users where UserName=@UserName";//
cmd.Parameters.Add(new SqlParameter("UserName", textBox1.Text));
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
int errorTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));//防sql注入漏洞攻击,参数化查询
if (errorTimes > 3)
{
MessageBox.Show("登录错误次数太多,禁止登录");
return;
}
string dbpassword = reader.GetString(reader.GetOrdinal("PassWord"));
if (dbpassword == textBox2.Text)
{
MessageBox.Show("登陆成功");
ResetErrorTimes();
}
else
{
IncErrorTimes();
MessageBox.Show("登录失败");
}
}
else
{
MessageBox.Show("用户名不存在");
}
}
}
}
}
}
}

 

相关截图:

 

登录代码很多,所以写了两个函数,将部分功能进行封装,然后调用,这样能让函数主体更加清晰明了。

防sql注入漏洞攻击,用参数化查询的方式能使程序更加安全。

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 详细请查看:http://net.itheima.com/

转载于:https://www.cnblogs.com/BlackHouse007/archive/2011/12/10/2283352.html

你可能感兴趣的文章
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
jdk从1.8降到jdk1.7失败
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
代码整洁
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>