zoukankan      html  css  js  c++  java
  • C#连接mysql数据库实现登陆注册界面

    环境:Mysql 5.7.28 + VS2017

    一、配置并测试Mysql数据库

    1. 安装mysql

    去mysql官网下载安装,可见安装教程

    2.  在VS中添加引用

    项目-->添加引用

    选择“浏览”-->找到mysql安装文件夹中的MySql.Data.dll

    3. 测试

    添加 添加using MySql.Data.MySqlClient

    using MySql.Data.MySqlClient;
    
    String connetStr = "server=localhost;port=3306;user=root;password=root; database=mydb;";
    // server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写
    MySqlConnection conn = new MySqlConnection(connetStr);
    try
    {    
          conn.Open();//建立连接,可能出现异常,使用try catch语句
          Console.WriteLine("已经建立连接");
          //在这里可以使用代码对数据库进行增删查改的操作
    }
    catch (MySqlException ex)
    {
          Console.WriteLine(ex.Message);//有错则报出错误
    }
    finally
    {
          conn.Close();//关闭通道
    }

    二、创建数据库

    mysql> create table user(
        -> id int primary key,
        -> user varchar(50) not null,
        -> pass varchar(50) not null
        -> );

    设置主键自增

    mysql> alter table user modify id int auto_increment;

    三、登陆与注册功能

            // 登陆
            private void button1_Click(object sender, EventArgs e)
            {
                String username, password;
                username = textBox1.Text;
                password = textBox2.Text;
    
                String connetStr = "server=localhost;port=3306;user=root;password=123456; database=login;";
                MySqlConnection conn = new MySqlConnection(connetStr);
                conn.Open();
    
                String sql = "select user,pass from user where user='" + username + "'and pass='" + password + "'";//SQL语句实现表数据的读取
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                MySqlDataReader sqlDataReader = cmd.ExecuteReader();
                if (sqlDataReader.HasRows)  //如果能查到,说明该用户密码存在
                {
                    //MessageBox.Show("登陆成功");
    
                    closeflag = true;
                    this.Close();
                }
                else
                {
                    MessageBox.Show("账号或密码错误或未注册");
                }
                conn.Close();
            }
    
            // 注册
            private void button2_Click(object sender, EventArgs e)
            {
                String username, password;
                username = textBox1.Text;
                password = textBox2.Text;
    
                String connetStr = "server=localhost;port=3306;user=root;password=123456; database=login;";
                MySqlConnection conn = new MySqlConnection(connetStr);
                conn.Open();
    
                String sql = "INSERT INTO user(user,pass) VALUES('" + username + "','" + password + "')"; // 没有判断重复插入
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                cmd.ExecuteNonQuery();
                MessageBox.Show("注册成功");
                conn.Close();
            }

    四、多窗口控制

    简单点的:如何关闭一个窗口,同时打开另一个窗口?

    在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,
    它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了。因此要关闭的窗口不能用Application.Run创建。
    如何使用Hide()(只是隐藏,其实进程还被占用着)之类或者Close()(这个操作会把所有窗体关闭,因为属于同一个线程)是达不到我们需要的效果的。
    要在关闭一个窗口的同时打开另一个窗口,可以按如下做法:

    先在第一个窗口声明一个公共的bool变量并赋值为true:
    如public bool closeflag = true;
    在program类里运行第二个窗口,主要代码:

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    //Application.Run(new Form1());
    Form1 form1 = new Form1();
    form1.ShowDialog();   
    if(form1.closeflag == true)
    {
        Application.Run(new Form2());
    }

    然后在Form1的关闭的相关控件(如按钮或什么的,就是要关闭这个窗口的控件)  将closeflag赋值为true,并调用this.close();关闭第一个窗口。

    五、其他

    如何设置密码框?

    设置textBox的属性,将PasswordChar中写入*即可。

    参考链接:

    1. https://blog.csdn.net/i_CodeBoy/article/details/79274498

    2. https://zhuanlan.zhihu.com/p/44828065

    3. https://www.cnblogs.com/xuliangxing/p/5984638.html

    4. https://zhuanlan.zhihu.com/p/28401873

    5. https://blog.csdn.net/qq_41398808/article/details/79772653

    6. https://blog.csdn.net/shouhouxiaomuwu/article/details/11943831

  • 相关阅读:
    SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试
    sql 知识点
    javascript基础拾遗——词法作用域
    Linux 软件包管理
    涉略spring
    WebReBuild年会流水记
    javascript面向对象学习笔记(一)——继承
    算法学习——动态规划策略入门
    编程之美读书笔记——2.3寻找水王
    Linux 引导流程解析
  • 原文地址:https://www.cnblogs.com/lfri/p/13034357.html
Copyright © 2011-2022 走看看