C#关于窗体登录功能的两种方式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

下面是登录窗体一:后台代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingMrCy.BaseClass;//引入文件夹BaseClassusingSystem.Data.SqlClient;//引入连接数据库所需的类namespaceMrCy{publicpartialclassfrmLogin:Form{publicfrmLogin(){InitializeComponent();}///summary///用户点击“登录”触发的事件////summary///paramname=sender/param///paramname=e/paramprivatevoidbtnLogin_Click(objectsender,EventArgse){try{stringUserName=txtUserName.Text.Trim();//获取用户名stringPassWord=txtPwd.Text.Trim();//获取密码if(UserName==)//如果用户名为空值{MessageBox.Show(请输入用户名,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出消息对话框}elseif(PassWord==)//如果密码为空值{MessageBox.Show(请输入密码,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出消息对话框}else{SqlConnectionconn=DBconn.Connection();//创建数据库连接对象conn.Open();//打开数据库连接stringstr=selectcount(*)fromtb_UserwhereUserName='+UserName+'andUserPwd='+PassWord+';//建立查询数据库中tb_User表的用户名和对应密码的SQL字符串,但是这样的SQL语句存在SQL注入漏洞(用户名:ww'or1=1--,密码:随便输)SqlCommandcmd=newSqlCommand(str,conn);//创建命令对象;intn=(int)cmd.ExecuteScalar();if(n=1)//判断是否有匹配的用户名和密码{stringstr1=select*fromtb_UserwhereUserName='+UserName+';//根据用户名查询tb_User表中数据cmd=newSqlCommand(str1,conn);//创建命令对象;SqlDataReadersdr=cmd.ExecuteReader();//创建数据读取器对象sdr.Read();//读取数据stringUserPower=sdr[Power].ToString().Trim();//获取数据库中tb_User表的Power字段sdr.Close();//关闭数据读取器conn.Close();//关闭数据库连接frmMainMain=newfrmMain();//建立主窗体对象Main.Uname=UserName;//将用户名赋值给frmMain窗体的Uname对象Main.Utime=DateTime.Now.ToString();//获取登录时间并赋值给主窗体的Utime对象Main.Upower=UserPower;//将用户权限赋值给主窗体的对象UpowerMain.Show();//显示frmMain窗体this.Hide();//隐藏当前登录窗体}else{MessageBox.Show(用户名或密码错误,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出提示框}}}catch(Exceptionex)//抛出异常{MessageBox.Show(登录失败,原因:\n+ex.Message,错误,MessageBoxButtons.OK,MessageBoxIcon.Error);//弹出消息对话框,显示错误信息}}///summary///单击“取消”按钮,退出系统////summary///paramname=sender/param///paramname=e/paramprivatevoidbtnCancel_Click(objectsender,EventArgse){if(MessageBox.Show(确定退出本系统吗?,提示,MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)//如果点击了消息对话框中的“确定”{Application.Exit();//退出应用程序}}///summary///当用户输入用户名之后判断是否按了“Enter”键,按了的话就激发“登录”按钮的Click事件////summary///paramname=sender/param///paramname=e/paramprivatevoidtxtUserName_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar==13){btnLogin_Click(sender,e);}}///summary///当用户输完密码,判断用户是否按了“Enter”键,按了就调用登录事件////summary///paramname=sender/param///paramname=e/paramprivatevoidtxtPwd_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar==13){btnLogin_Click(sender,e);}}}}下面是登录窗体二:后台代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;usingPMS.PMSClass;namespacePMS{publicpartialclassfrmLogin:Form{publicfrmLogin(){InitializeComponent();}DBOperateoperate=newDBOperate();//创建操作数据库对象privatevoidbtnLogin_Click(objectsender,EventArgse){try{if(txtUserName.Text==||txtUserPwd.Text==)//判断用户名和密码是否为空{MessageBox.Show(用户名和密码不能为空!,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出消息对话框return;//退出事件}else{stringname=txtUserName.Text.Trim();//移除用户名前部和后部的空格stringpwd=txtUserPwd.Text.Trim();//移除密码前后的空格SqlConnectionconn=DBConnection.MyConnection();//创建数据库连接对象stringsql=select*fromtb_UserwhereUserName='+name+'andUserPwd='+pwd+';//查询语句,但是此查询语句存在SQL注入漏洞(用户名:=1--密码:随便输)conn.Open();//打开数据库连接SqlCommandcmd=newSqlCommand(sql,conn);//创建数据库命令对象SqlDataReadersdr=cmd.ExecuteReader();//得到数据读取器对象sdr.Read();//读取一条记录if(sdr.HasRows)//判断数据表中是否包要查找的数据{stringtime=DateTime.Now.ToString();//得到系统时间字符串stringsql2=updatetb_UsersetLoginTime='+time+'whereUserName='+name+';//设置更新数据库的SQL语句operate.OperateData(sql2);//更新数据库内容conn.Close();//关闭数据库连接this.Hide();//隐藏窗体frmMainMain=newfrmMain();//创建主窗体对象Main.User=name;//为主窗体字段赋值Main.Logintime=time;//为主窗体字段赋值Main.Show();//显示主窗体}else{txtUserName.Text=;//清空用户名txtUserPwd.Text=;//清空密码MessageBox.Show(用户名或密码错误!,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出消息对话框}}}catch(Exceptionex)//捕获异常{MessageBox.Show(登录失败,原因:\n+ex.Message,错误,MessageBoxButtons.OK,MessageBoxIcon.Error);//弹出显示登录失败的消息对话框}}///summary///用户单击“取消”按钮将关闭所有应用程序窗口////summary///paramname=sender/param///paramname=e/paramprivatevoidbtnCancel_Click(objectsender,EventArgse){if(MessageBox.Show(确定要退出本系统吗?,提示,MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){Application.Exit();//退出程序}}///summary///当用户输完密码,判断用户是否按了“Enter”键,按了就调用登录事件////summary///paramname=sender/param///paramname=e/paramprivatevoidtxtUserPwd_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar==13){btnLogin_Click(sender,e);}}}}以上两个窗体皆能实现登录,但两者的登录方式不同,前者用到的主要语句是:SqlCommandcmd=newSqlCommand(str,conn);//创建命令对象;intn=(int)cmd.ExecuteScalar();if(n=1)//判断是否有匹配的用户名和密码{后者用到的主要语句是:SqlCommandcmd=newSqlCommand(sql,conn);//创建数据库命令对象SqlDataReadersdr=cmd.ExecuteReader();//得到数据读取器对象sdr.Read();//读

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功