admin管理员组文章数量:1794759
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
本文标签: 控件数据库数据mySQLdataGridView
版权声明:本文标题:VS2019连接MySQL数据库并实现dataGridView控件显示表中的数据 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686768346a100237.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论