• ADO.NET连接MySQL并绑定DataGridView


    ADO.NET

    ADO.NET组件的目的是为了从数据操作中分解出数据访问。
    ADO.NET有两大核心组件:DataSet和.NET数据提供程序。
    .NET数据提供程序包括Connection、Command、DataReader、DataAdapter。
    DataSet是一种数据集合,包含多个DataTable对象的集合,DataTable由数据行、列、主键等信息组成。
    Connection用来建立与数据库的连接。
    Command用来对数据库的增删改查的操作。
    DataReader用来查询数据库的多列、多条记录。
    DataAdapter是DataSet和数据库连接之间的桥接器。

    实例

    本文将结合一个实例介绍如何使用DataGridView控件操作MySQL数据库中的数据。
    首先,在设计界面设计一个DataGridView控件,并设置其属性以及各列的属性,(name)为dataGridView1。
    在DataGridView的列编辑器可以设置列的属性,如下图。
    1
    每一列的DataProperty属性要与数据库中的字段名相同。
    使用DataGridView.DataSource为其设置绑定的数据源,然后分别在事件CellBeginEdit和事件CellEndEdit编辑代码,用来更新修改数据。
    使用TextBox、ComboBox和Button三个控件来查询数据。

    用NuGet安装上MySql.Data:
    1

    using MySql.Data.MySqlClient;
    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;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.dataGridView1.DataSource = GetDataTable("");
                this.comboBoxCondition.SelectedIndex = 0;
            }
    
            DataSet dataSet;
            MySqlDataAdapter mySqlDataAdapter;
            object oldValues;
            string connStr = "server=localhost;Database=pikachu;uid=root;pwd=root;charset=utf8";
    
            private DataTable GetDataTable(string sqlStr)
            {
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    mySqlDataAdapter = new MySqlDataAdapter();
                    // string sql = @"SELECT [id], [username] FROM [pikachu].[users] WHERE 1=1";
                    string sql = @"SELECT id, username FROM users WHERE 1=1 ";
                    dataSet = new DataSet();
                    mySqlDataAdapter.SelectCommand = new MySqlCommand(sql + sqlStr, conn);
                    mySqlDataAdapter.Fill(dataSet);
                }
                return dataSet.Tables[0];
            }
    
            private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
            {
                oldValues = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
            }
    
            private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                string condition = this.dataGridView1.CurrentRow.Cells[e.ColumnIndex].Value.ToString();
    
                if (oldValues.ToString() == condition)
                    return;
    
                DialogResult result = MessageBox.Show("确定要保存对数据的修改吗?", "提示", MessageBoxButtons.OKCancel,
                    MessageBoxIcon.Question);
                if(result == DialogResult.OK)
                {
                    MySqlConnection mySqlConnection = new MySqlConnection(connStr);
                    mySqlDataAdapter.UpdateCommand = mySqlConnection.CreateCommand();
                    string sql = string.Empty;
                    switch(e.ColumnIndex)
                    {
                        case 1:
                            sql = string.Format("username='{0}'", condition);
                            break;
                        default:
                            break;
                    }
                    string id = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
                    sql = string.Format("update users set {0} where id = {1}", sql, id);
    
                    mySqlDataAdapter.UpdateCommand.CommandText = sql;
                    MySqlCommandBuilder mySqlCommandBuilder = new MySqlCommandBuilder(mySqlDataAdapter);
                    mySqlDataAdapter.Update(dataSet, dataSet.Tables[0].TableName);
                    MessageBox.Show("修改成功!");
                }
                else
                {
                    this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = oldValues;
                }
            }
    
            private void btnSelect_Click(object sender, EventArgs e)
            {
                string condition = this.txtCondition.Text.Trim();
                string sql = string.Empty;
                int index = this.comboBoxCondition.SelectedIndex;
    
                switch (index)
                {
                    case 0:
                        sql = string.Format("and id = {0}", condition);
                        break;
                    case 1:
                        sql = string.Format("and username like '%{0}%'", condition);
                        break;
                    default:
                        sql = string.Format("and username like '%{0}%'", condition);
                        break;
                }
                this.dataGridView1.DataSource = GetDataTable(sql);
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109

    效果如下:
    1

    参考

    https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.datagridview?view=windowsdesktop-6.0

  • 相关阅读:
    等待风起——京东.Vision项目参与实录分享
    含文档+PPT+源码等]精品spring boot+MySQL客户关系管理系统vue[包运行成功]SpringBoot毕业设计程序设计项目源码
    信息系统项目管理师第四版学习笔记——项目管理科学基础
    支持高频数采、实时流计算的储能可预测维护系统方案
    JSTL 标签库
    MySQL面试之---MyISAM与InnoDB的区别
    springboot kafka消息消费学习 @KafkaListener 使用
    MindSpore优秀论文5:[AAAI] CycleCol:基于循环卷积神经网络对真实单色-彩色摄像系统着色
    上传图片并显示#Vue3#后端接口数据
    Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》
  • 原文地址:https://blog.csdn.net/lilongsy/article/details/127349852