IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> VS2019连接MySQL数据库并实现dataGridView控件显示表中的数据 -> 正文阅读

[大数据]VS2019连接MySQL数据库并实现dataGridView控件显示表中的数据

目录

一.实验目的

二.具体操作

?1.数据库连接VS2019的操作

?2.在数据库中建立三张表

?3.使用DataGridView控件显示表中的数据;

?4.实现基本crud操作(具体代码)

三.实现结果:

?四.仓库代码:


一.实验目的

1、请设计一个项目连接到自己的MySQL数据库,数据库包含至少三张表;
2、使用dataGridView控件显示表中的数据;
3、实现基本crud操作;

二.具体操作

1.数据库连接VS2019的操作

(1)首先要下载mysql(这里就省略了,网上的教材很多)

(2)下载mysql 的驱动,要不然在VS中连接数据库时会发现没有mysql数据库。(尽管mysql你已经下载,也不会显示,因为你没有mysql对VS的相关驱动),如果驱动安装完成后,再次“数据库连接”会出现以下界面,会有“MySQL Database”选项。

现在来说说下载驱动中我遇到的问题以及好的借鉴教程:

VS2019连接mysql的详细教程

VS2019连接mysql教程

整体的过程可以跟着上面两个教程去做,但是其中我遇到了问题:

(1)当我去下载那两个驱动的时候,那两篇文章给的官网的链接都是最新版的,在我自己下载的过程,会显示报错,并且显示了需要的版本。这时候我们就需要旧的版本。最后找了半天找到了一个下载旧版本的地址:

选择自己需要下载的东西,进入后选择版本下载即可(然后再跟着上面的教程接着去做)

MySQL :: MySQL Product Archives

?(2)在添加连接的过程中,要记得“Database name”要是自己提前创建了的

?

?我是在Navicat Premium15中连接mysql后建立的数据库(“test”)。点击“测试连接”后成功。

?2.在数据库中建立三张表

(1)直接用Nvaicat Premium手动建立的数据库

?(2)或者使用指令(这个比较方便)

示例:

建表:

--学生表
CREATE TABLE `Student`(
?? ?`s_id` VARCHAR(20),
?? ?`s_name` VARCHAR(20) NOT NULL DEFAULT '',
?? ?`s_birth` VARCHAR(20) NOT NULL DEFAULT '',
?? ?`s_sex` VARCHAR(10) NOT NULL DEFAULT '',
?? ?PRIMARY KEY(`s_id`)
);
插入数据:

--插入学生表测试数据
insert into Student values('01' , '赵雷' , '1990-01-01' , '男');
insert into Student values('02' , '钱电' , '1990-12-21' , '男');
insert into Student values('03' , '孙风' , '1990-05-20' , '男');
?

?到此建表完成!

3.使用DataGridView控件显示表中的数据;

首先创建DataGridView控件

?然后将DataGridView控件与数据库关联(一定要注意,进行这个操作前,去看看这个数据链接是不是打开的状态,如果你是重新启动去看的,那么就是关闭的状态,你去点击一下就可以打开了!!!)然后进行以下操作:

1)我这个是已经添加过的,点击添加数据源

?2)选择“数据库”--》“数据集”--》选择自己想要绑定的表格--》点击完成

选择之前连接的数据库(网上很多的教程是去“新建连接”,他们用的都是sqlsever,我们这是之前已经连接了的)

?最后就是选择你想要绑定的表格就完成了!(我这里只折腾了半个多小时,原因就是每次启动的时候没有去看添加的数据库是否打开没,每次启动进去都是没有打开的,因此总是报错。最后自己再次尝试后,一次性成功了!)

3)实现框架

?
4.实现基本crud操作(具体代码)

数据库连接操作:

private void print_in_dataGridView()
        {
            MySqlCommand mycom = conn.CreateCommand();
            mycom.CommandText = "SELECT * FROM student ; ";
            MySqlDataAdapter adap = new MySqlDataAdapter(mycom);
            DataSet ds = new DataSet();
            adap.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            string M_str_sqlcon = "server=localhost;user id=root;password=20010401;database=test";                                                                                              //创建数据库连接对象
            conn = new MySqlConnection(M_str_sqlcon);
            try
            {
                //打开数据库连接
                conn.Open();
                MessageBox.Show("数据库已经连接了!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            print_in_dataGridView();
        }

增:

private void button4_Click(object sender, EventArgs e)
        {
            String table_name = textBox1.Text.Trim();
            String Id = textBox2.Text.Trim();
            String Name = textBox3.Text.Trim();
            String Sex = textBox4.Text.Trim();
            String Birth = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            string[] row = { Id, Name, Birth, Sex };

            try
            {
                conn.Open();
                String insertstr = "INSERT INTO Student (s_id,s_name,s_birth,s_sex) VALUES" + "(" + Id + "," + Name + "," + Birth + "," + Sex + ");";
                MySqlCommand cmd = new MySqlCommand(insertstr, conn); //实例化数据库命令对象
                cmd.ExecuteNonQuery(); //执行命令
            }
            catch { MessageBox.Show("输入数据有误,请输入有效数据!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            finally { conn.Close(); }
            //显示到dataGridView
            print_in_dataGridView();
        }

删:

private void button3_Click(object sender, EventArgs e)
        {
        try
                    {
                        conn.Open();
                        string select_id = textBox2.Text;//选择的当前行第一列的值,也就是ID
                        string delete_by_id = "delete from Student where s_id = " + "\"" + select_id + "\"";//sql删除语句,根据学号删除
                        MySqlCommand cmd = new MySqlCommand(delete_by_id, conn);
                        cmd.ExecuteNonQuery(); //执行命令
                    }
                    catch { MessageBox.Show("请正确选择行!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                    finally { conn.Dispose(); }
                    print_in_dataGridView();
        }

改:

private void button2_Click(object sender, EventArgs e)
        {
            int flag1 = 0, flag2 = 0;
            try
            {
                conn.Open();//打开数据库
                string updatestr = "UPDATE Student SET ";
                String table_name = textBox1.Text.Trim();
                String Id = textBox2.Text.Trim();
                String Name = textBox3.Text.Trim();
                String Sex = textBox4.Text.Trim();
                String Birth = dateTimePicker1.Value.ToString("yyyy-MM-dd");
                string[] row = { Id, Name, Birth, Sex };
                
                if (checkBox_birth.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_birth = " + "\"" + Birth + "\"";

                        flag1 = 1;

                    }
                    else
                        updatestr += ", s_birth = " + "\"" + Birth + "\"";
                }
                if (checkBox_name.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_name = " + "\"" + Name + "\"";
                        flag1 = 1;
                    }
                    else
                        updatestr += ", s_name = " + "\"" + Name + "\"";
                }
                if (checkBox_sex.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_sex = " + "\"" + Sex + "\"";
                        flag1 = 1;
                    }
                    else
                        updatestr += ", s_sex = " + "\"" + Sex + "\"";
                }
                updatestr += " WHERE s_id = " + "\"" + Id + "\"";
                MySqlCommand cmd = new MySqlCommand(updatestr, conn);
                cmd.ExecuteNonQuery();
            }
            catch
            {
                flag2 = 1;
                MessageBox.Show("输入数据违反要求!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally { conn.Close(); }

            print_in_dataGridView();
            if (flag2 == 0)
            {
                MessageBox.Show("修改成功!", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

查:

private void button1_Click(object sender, EventArgs e)
        {
            string table_name = textBox1.Text.Trim();
            string name = textBox3.Text.Trim();
            string date = dateTimePicker1.Text;
            string sex = textBox4.Text.Trim();
            if (table_name == null && (table_name != "教师") && (table_name!="学生"))

            {
                MessageBox.Show("请正确填写表格名");
            }

            else
            {
                
                string sql = "select * from " + table_name;
                mda = new MySqlDataAdapter(sql, conn);
                ds = new DataSet();
                mda.Fill(ds, table_name);
                //显示数据
                dataGridView1.DataSource = ds.Tables[table_name];
                conn.Close();

            }

        }

三.实现结果:

连接数据库、查询

?增(输入相应的数据后,增加):

?删除(输入id后,点击删除即可):

?输入你想要修改的栏目和以及修改的内容,点击修改即可。

?

?四.仓库代码:

Gitee

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:18:23  更:2022-06-01 15:20:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:23:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码