(1)登陆窗体的登陆过程验证:
using System;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace 登陆窗体
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void IntErrorTime()
{
using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True; User Instance =True"))
{
conn.Open();
using (SqlCommand updateCmd = conn.CreateCommand())
{ //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update
updateCmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1 where UserName = @UN";
updateCmd.Parameters.Add("UN", txtUserName.Text);
updateCmd.ExecuteNonQuery();
}
}
}
private void RecentErrorTime()
{
using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True; User Instance =True"))
{
conn.Open();
using (SqlCommand updateCmd = conn.CreateCommand())
{ //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update
updateCmd.CommandText = "update T_User set ErrorTimes=0 where UserName = @UN";
updateCmd.Parameters.Add("UN", txtUserName.Text);
updateCmd.ExecuteNonQuery();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True; User Instance =True"))//实现了IDisposable接口,用using括起,便于自动释放,在using()后调用了IDisposabl方法,它先判断有无conn.Close();如果没有,先进行关闭,在释放
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())//创建命令对象的实例并与先建的数据库建立连接,将连接using进来,使此方法直接不用释放,出了括号会自动释放
{
cmd.CommandText = "select * from T_User where UserName=@UN";
cmd.Parameters.Add("UN", txtUserName.Text);
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
int errorTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));
if (3 < errorTimes)
{
MessageBox.Show("登陆次数过多,禁止登陆!");
return;
}
else
{
string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
if (txtPassword.Text == dbpassword)
{
MessageBox.Show("登陆成功!");
RecentErrorTime();
}
else
{
IntErrorTime();
//using (SqlCommand updatecmd = conn.CreateCommand())
//{ //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update
// updatecmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1 where UserName = @UN";
// updatecmd.Parameters.Add("UN", txtUserName.Text);
// updatecmd.ExecuteNonQuery();
//}
MessageBox.Show("登陆失败!");
}
}
}
else
{
MessageBox.Show("用户名不存在~");
}
}
}
}
}
}
}
ADO.NET学习笔记(三)
最新推荐文章于 2024-04-18 09:39:19 发布