C#实现数据库登录与注册程序

wuchangjian2021-11-03 08:12:12编程学习

最近看见好多人都在写这个,但他们用的都是用户名登录,如果用户名太长,那就太麻烦了。

第一步:按照网上的教程建表。并在表中手动输入一条数据。

第二步:在Form1.cs(登录界面)自定义一个判断密码用户名是否正确的方法:

public int Ex(string sql)
        {
            SqlCommand com = new SqlCommand(sql, conn);
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            com.CommandType = CommandType.Text;
            int result = Convert.ToInt32(com.ExecuteScalar());
            conn.Close();
            return result;
        }

再定义一个GetDataSet方法,用于查询用户名。

public static DataSet GetDataSet(string sql1)
        {
            SqlDataAdapter sqlda = new SqlDataAdapter(sql1,conn);
            DataSet ds = new DataSet();
             sqlda.Fill(ds);
            return ds;

        }

ID输入框的代码如下

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsDigit(e.KeyChar) || (e.KeyChar == '\r' || (e.KeyChar == '\b')))
                e.Handled = false;
            else
                e.Handled = true;
        }

判断输入是否合理方法代码如下:

private bool ValidateInput()
        {
            if (textBox1.Text.Trim() == "")
            {
                MessageBox.Show("请输入登录账号");
            }
            else if (int.Parse(textBox1.Text.Trim()) > 65535)
                MessageBox.Show("请输入正确的登录账号");
            else if (textBox1.Text.Trim().Length > 5 && textBox2.Text.Trim() == "")
                MessageBox.Show("请输入密码");
            return true;
        }

登录按钮事件代码如下:

if (ValidateInput())
            {
                try
                {
                    if(conn.State == ConnectionState.Open)
                    {
                        conn.Dispose();
                        conn.Close();
                    }
                    int id = int.Parse(textBox1.Text.Trim());
                    string sql = "select count(*) from tb_User where ID=" + id + " and Pwd = '" + textBox2.Text + "'";
                    int num = Ex(sql);
                    if (num == 1)
                    {
                        UserID = int.Parse(textBox1.Text.Trim());
                        this.Hide();
                        Form2 Form21 = new Form2();
                        Form21.Show();
                        
                    }
                    else
                    {
                        MessageBox.Show("用户Id或密码不正确");
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show("未能连接到服务器","提示");
                }
            }

别忘了在

public Form1()
        {
            InitializeComponent();
        }

的下面添加

public static int UserID = 0;
        public static SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-GNQACEJ\Gres;Integrated Security=True;DataBase=Server");

新建一个主窗体,在主窗体中写入代码:

public static string PeopleName;
        private void Form2_Load(object sender, EventArgs e)
        {
            PeopleName = Form1.GetDataSet("select Name from tb_User where ID=" + Form1.UserID).Tables[0].Rows[0][0].ToString();
            label1.Text = PeopleName + "\n(" + Form1.UserID + ")";
            label2.Text = Form1.GetDataSet("select Text from tb_User where ID=" + Form1.UserID).Tables[0].Rows[0][0].ToString();
            if(label1.Text.Trim().Length < 1)
            {
                label2.Text = "无个性签名";
            }
        }

程序最终运行效果:Form1

 Form2

 

相关文章

Redis 击穿、穿透、雪崩产生原因以及解决思路

Redis 击穿、穿透、雪崩产生原因以及解决思路

前言 大家都知道,计算机的瓶颈之一就是IO,为了解决内存与...

Python学者小思考(2021-11-12)

      Python有多火相信各位早有耳闻,它不仅应用广泛࿰...

QOS学习笔记

(工作时间之余,总结了这些,累的食指快脱节了&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。