MySQL数据库和Visual Studio (C#)联合编程

编程达人挑战赛·第5期 10w+人浏览 198人参与

创建数据库

首先要在Navicat软件创建出一个如下图所示的数据库(如果不了解请去看上一篇文章<<MYSQl数据库详细知识点和在Navicat中的具体操作>>)

创建 Winform 项目并设计界面

添加Mysql程序集

编写代码实现切换逻辑

using MySql.Data.MySqlClient;//1.导入Mysql程序集
using System;
using System.Data;
using System.Windows.Forms;
namespace _01MySQl联合编程
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // 核心字段:MySQL数据库连接对象(全局唯一,用于整个窗体的数据库交互)
        // MySqlConnection:MySQL官方提供的连接类,负责与数据库建立/断开连接
        MySqlConnection conn = null;

        //连接数据库点击事件
        private void button1_Click(object sender, EventArgs e)
        {
            // try-catch异常捕获:处理数据库连接中可能出现的错误
            try
            {
                //先定义连接数据库所需要的信息
                // server:数据库服务器地址(localhost=本地服务器)
                // port:MySQL端口号(默认3306)
                // user:数据库登录用户名(默认root)
                // password:数据库登录密码(默认root)
                // database:要操作的目标数据库名(此处为school数据库)
                // charset:字符编码(utf8确保中文不出现乱码)
                string connStr = "server=localhost;port=3306;user=root;password=root;database=school;charset = utf8";

                //实例化连接对象:传入连接字符串初始化连接配置
                conn = new MySqlConnection(connStr);

                //打开数据库连接(实际建立与MySQL服务器的网络连接)
                conn.Open();

                //判断连接状态:ConnectionState.Open表示连接成功
                if (conn.State == ConnectionState.Open)
                {
                    MessageBox.Show("Mysql连接成功");
                    // 连接成功后,启用"关闭连接"和"查询"按钮(初始为禁用状态)
                    button2.Enabled = true;
                    button3.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Mysql连接失败" + ex.Message);
            }
        }

        //关闭数据库连接点击事件
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                //先判断连接对象是否不为空
                if (conn != null)
                {
                    // 关闭数据库连接
                    conn.Close();
                    // 判断连接状态:ConnectionState.Closed表示关闭成功
                    if (conn.State == ConnectionState.Closed)
                    {
                        MessageBox.Show("Mysql关闭成功");
                        // 关闭成功后,禁用"关闭连接"和"查询"按钮
                        button2.Enabled = false;
                        button3.Enabled = false;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Mysql关闭失败" + ex.Message);
            }
        }

        //查询数据库点击事件--学生表
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                //获取用户输入的表名
                string tableName = textBox1.Text;

                //构建查询SQL语句:select * from 表名(查询表中所有数据)
                string sql = "select * from " + tableName;

                //执行查询:使用MySqlHelper工具类的ExecuteReader方法
                // MySqlDataReader:数据读取器(流式读取查询结果,只能向前读取)
                // 参数1:已打开的数据库连接对象conn;参数2:查询SQL语句
                MySqlDataReader reader = MySqlHelper.ExecuteReader(conn, sql);

                //拼接查询结果字符串
                string str = "";

                // 循环读取数据:reader.Read()返回true表示有下一条数据
                while (reader.Read())
                {
                    // reader.FieldCount:获取当前查询结果的字段总数
                    // 循环遍历每个字段,拼接字段值(\t是制表符,用于对齐显示)
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        str += reader[i].ToString() + "\t";
                    }
                    str += "\n";
                    //str += reader[0].ToString() + "\t"+ reader[1].ToString() + "\n";
                }
                MessageBox.Show(str);
                //关闭数据读取器
                reader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("查询失败" + ex.Message);
            }
        }

        //窗体加载事件
        private void Form1_Load(object sender, EventArgs e)
        {
            // 初始状态禁用"关闭连接"和"查询"按钮
            button2.Enabled = false;
            button3.Enabled = false;
        }

        //插入数据
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                // 获取用户输入的参数
                string tableName = textBox1.Text;  // 目标表名(如"student")
                string id = textBox2.Text;         // 学生ID(对应数据库id字段,主键不可重复)
                string sname = textBox3.Text;      // 学生姓名(对应数据库sname字段,字符串类型)
                string age = textBox4.Text;        // 学生年龄(对应数据库age字段,整数类型)
                string address = textBox5.Text;    // 学生地址(对应数据库address字段,字符串类型)
                string sex = textBox6.Text;        // 学生性别(对应数据库sex字段,字符串类型)

                // 构建插入SQL语句(核心:字段名与值必须一一对应)
                // 格式:insert into 表名 (字段1,字段2,...) values (值1,值2,...)
                // 注意:
                // 1. 字符串类型的值必须用单引号''包裹(如'sname'),否则会报语法错误
                // 2. 整数类型的值无需加单引号(如age)
                // 3. 字段顺序必须与values中的值顺序一致
                string sql = "insert into " + tableName + " (id, sname, age, address, sex) " + "values (" + id + ", \'" + sname + "\', " + age + ", \'" + address + "\', \'" + sex + "\')";

                //执行插入操作:使用MySqlHelper的ExecuteNonQuery方法
                // 该方法返回值:受影响的行数(插入成功返回1,失败返回0)
                int number = MySqlHelper.ExecuteNonQuery(conn, sql);

                //判断插入结果:受影响行数>0表示插入成功
                if (number > 0)
                {
                    MessageBox.Show("数据插入成功");
                }
                else
                {
                    MessageBox.Show("数据插入失败");
                }
            }
            catch (Exception ex)
            {
                // 捕获插入异常:
                // 1. 主键冲突(id已存在);2. 字段类型不匹配(如age输入非数字);
                // 3. 字符串未加单引号;4. 字段数量与值数量不匹配等
                MessageBox.Show("数据插入失败" + ex.Message);
            }

        }
        //修改部门信息
        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                string tableName = textBox1.Text;//学生表
                string id = textBox2.Text;//学生id
                string sname = textBox3.Text;//学生姓名
                string age = textBox4.Text;//学生年龄
                string address = textBox5.Text;//学生学校
                string sex = textBox6.Text;//学生性别

                //构建修改SQL语句(核心:必须加where条件,否则会修改全表数据!)
                // 格式:update 表名 set 字段1=值1, 字段2=值2,... where 条件
                // 注意:
                // 1. set后多个字段用逗号分隔;2. where条件必须明确(如id=xxx),避免批量修改;
                // 3. 字符串类型值加单引号,整数类型不加;4. 字段名必须与数据库一致
                string sql = "update " + tableName + " set sname='" + sname + "', age=" + age + ", address='" + address + "', sex='" + sex + "' where id=" + id;

                //执行修改操作:ExecuteNonQuery返回受影响的行数(修改成功返回1,无匹配数据返回0)
                int number = MySqlHelper.ExecuteNonQuery(conn, sql);

                //判断修改结果
                if (number > 0)
                {
                    MessageBox.Show("数据更新成功");
                }
                else
                {
                    MessageBox.Show("数据更新失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据更新失败" + ex.Message);
            }
        }

        //删除数据
        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                // 获取用户输入的参数(删除条件+目标表名)
                string tableName = textBox1.Text;  // 目标表名(如"student")
                string id = textBox2.Text;         // 删除条件:学生ID(主键,确保只删除一条数据)

                // 构建删除SQL语句(核心:必须加where条件,否则会删除全表数据!)
                // 格式:delete from 表名 where 条件
                // 注意:where条件必须明确(如id=xxx),否则会导致数据全部丢失!
                string sql = "delete from " + tableName + " where id=" + id;

                //执行插入操作 ExecuteNonQuery返回受影响的行数(删除成功返回1,无匹配数据返回0)
                int number = MySqlHelper.ExecuteNonQuery(conn, sql);

                if (number > 0)
                {
                    MessageBox.Show("数据删除成功");
                }
                else
                {
                    MessageBox.Show("数据删除失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据删除失败" + ex.Message);
            }
        }
    }
}

效果演示

希望对大家有所帮助。感谢大家的关注和点赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值