C#用户登录界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace LoginProject
{
    public partial class FrmLogin : Form
    {
        public FrmLogin()
        {
            InitializeComponent();
        }

        private void btnYes_Click(object sender, EventArgs e)
        {
            
            SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
            scsb.DataSource = "SK-20220626HGWR";
            scsb.InitialCatalog = "test";
            scsb.UserID = "sa";
            scsb.Password = "123456";
            string user_id = txtUser.Text;
            string user_pwd = txtPwd.Text;

            if (user_pwd==""||user_id=="" )
            {
                MessageBox.Show("请输入用户名或密码");
                return;  //直接结束事件


            }

            SqlConnection conn = new SqlConnection(scsb.ToString());
            if (conn.State == System.Data.ConnectionState.Closed)  //判断连接的开启状态,如果是关闭的则打开
                conn.Open();
       

            string str = "Select*from userinfo WHERE [user_id ]='" + user_id + "'";
            // string str = "Select*From userinfo WHERE [user_id]='" + user_id + "' AND [user_pwd]='"+user_pwd+"'";          方法二
            //string str1 = "Select*from userinfo WHERE [ user_pwd]='" + user_pwd + "'";
            SqlCommand comm = new SqlCommand(str, conn);

            //对于每个关联的 SqlConnection,一次只能打开一个 SqlDataReader,在第一个关闭之前,打开另一个的任何尝试都将失败。 
            //类似地,在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为它提供服务,直到调用 Close 时为止。

            SqlDataReader scb = comm.ExecuteReader();
            string rs="" ;
            //string rs1 = "";
            //如果存在多个行,则为 true;否则为 false
            // 看在数据库中是否查询到相关信息,若为true,说明用户名正确,就不用如下把用户名和账号都验证了
            if (scb.Read())   
            {
              //  MessageBox.Show("登录成功");  方法二
                //
                //
                //
                rs = scb["user_pwd"].ToString();
                if (rs == user_pwd)
                {
                    MessageBox.Show("登录成功");
                }
                else
                {
                    MessageBox.Show("密码错误");
                }

            }
          
            else
            {
                MessageBox.Show("用户不存在");
            }

            scb.Close();

            //SqlCommand comm1 = new SqlCommand(str1, conn);
            //SqlDataReader scb1 = comm.ExecuteReader();


            //while (scb1.Read())             
            //{
            //    rs1 = scb1["user_pwd"].ToString();
            //}


            //if (rs == user_id &&
            //    rs1 == user_pwd)
            //    MessageBox.Show("登录成功");
            //else
            //{
            //    MessageBox.Show("登录失败");
            //}

        }

       
    }
}

  还缺少将密码明文设置为密文的方法。

获得的经验:

在while、if 、for内定义的变量,函数外不能调用,若想调用则需声明在外,若函数内给变量赋值了,函数外变量能接受该值。但声明变量时必须赋值,string赋值“”,否则调用该变量时报错未赋值(其实函数内已赋值,但不知道为啥报错)

代码中

 if ((user_pwd==""||user_id=="" )

应该为:

 if (string.IsNullOrEmpty(user_pwd)||string.IsNullOrEmpty(user_id))  

IsNullOrEmpty()方法 指定字符串是null还是emoty,返回bool

  • 1
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值