该模块实现的功能主要是用户登录;用户登录输入的数据如果错误三次,那么就不可以再进行登录,系统将退出程序;当然,该模块的程序不是很完善,比如:当用户在第三次输入数据时正确,那么就应该将前面的错误次数清除掉,但程序没有这样实现;当然我会进一步完善;下面是对模块的实现:
private void button2_Click(object sender, EventArgs e)
{
string conn = "initial catalog=MyADO;server=.;integrated security=true;";
if(textBox1.Text.Trim()==""||textBox2.Text.Trim()==""){
MessageBox.Show("请输入数据","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
else{
using(SqlConnection sqlconn=new SqlConnection(conn)){
sqlconn.Open();
using(SqlCommand sqlcmd=sqlconn.CreateCommand()){
sqlcmd.CommandText = "select * from UserInfo where UserName=@username";
sqlcmd.Parameters.Add(new SqlParameter("username", textBox1.Text.Trim()));
SqlDataReader dr = sqlcmd.ExecuteReader();
if(dr.Read()){
int num = dr.GetInt32(dr.GetOrdinal("ErroTime"));
if(num==3){
dr.Close();
dr.Dispose();
sqlconn.Close();
sqlconn.Dispose();
MessageBox.Show("您不可以再进行登录操作!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
Application.Exit();
}
else{
///可以继续进行登录操作;
//string username=dr.GetString(dr.GetOrdinal("UserName"));
string userpwd=dr.GetString(dr.GetOrdinal("UserPWD"));
if(userpwd==this.textBox2.Text.Trim()){
MessageBox.Show("登录成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return; 登录成功应该跳转;
}
else{
num++;
MessageBox.Show("密码不正确","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
///写入到数据库中;
dr.Dispose();
sqlconn.Close();
sqlconn.Dispose();
using(SqlConnection sconn=new SqlConnection(conn)){
sconn.Open();
using (SqlCommand cmd =sconn.CreateCommand()) {
cmd.CommandText = "update UserInfo set ErroTime=@errotimes where UserName=@username";
cmd.Parameters.Add(new SqlParameter("errotimes", num));
cmd.Parameters.Add(new SqlParameter("username",textBox1.Text.Trim()));
cmd.ExecuteNonQuery();/// 执行;
sconn.Close();
sconn.Dispose();
} } } } }
else{
MessageBox.Show("该用户不存在","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
} } } } }
数据库表:
USE [MyADO]
GO
CREATE TABLE [dbo].[UserInfo](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](16) COLLATE Chinese_PRC_CI_AS NOT NULL,
[UserPWD] [varchar](16) COLLATE Chinese_PRC_CI_AS NOT NULL,
[ErroTime] [int] NOT NULL CONSTRAINT [DF_UserInfo_ErroTime] DEFAULT ((0)),
CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF