C#第四次作业:C#连接MySQL数据库

来源:互联网 发布:二级c语言考试系统 编辑:程序博客网 时间:2024/06/04 19:31

作业要求

目标1.MySQL数据库的基本操作,包括如下两个工作:
(1)在MySQL数据库中插入两个文件中的数据(
List_Class1.txt, List_Class1_Submit.xls,点击下载)。
(2)利用SQL命令查找所有 出现在“List_Class1”中,未出现在“List_Class1_Submit” 的学生名单,并保存或输出(截图)。

目标2. C#操作MySQL数据库。
(1)连接作业1中建立的数据库中的相关的表(table),显示在DataGridView控件中。
(2)C#语言编程实现数据库的插入、删除、修改某一条或若干条记录。 

目标3. 多表操作。
(1)利用文件中提供的第一次作业互评成绩(
Grade_FirstExercise.xls),创建一个Table,包括的字段为 学号、姓名、作业次数、此次作业分数(所有字段都推荐用英文命名)。
(2) 结合1说创建的表格与互评成绩,最终得到每次作业中学生成绩的汇总。

 

目标1:

先将List_Class1.txt的编码方式改为UTF-8,方法:文件---另存为---编码---UTF-8。

然后打开navicat for MySQL,新建一个数据库cs ,字符集也是选择utf-8 。现在开始导入(以导入List_Class1.txt为例)

 

因为这里是txt文件,所以选择文本文件

 

选择栏位分隔符为空格

注意这里的第一个数据行要写2

     

接下来一直点击下一步,直到“开始”,导入成功


List_Class1_Submit.xls 也是同样的导入方法,这里就不多说了,直接截导入成功的图,这里把List_Class1_Submit.xls在数据库存为sheet1,下文的sheet1指的就是如下这张表



利用SQL命令查找所有 出现在“List_Class1”中,未出现在“List_Class1_Submit” 的学生名单,并保存或输出

这里在选中cs数据库,点击查询----新建查询


查询语句及结果



目标2:

因为要用C#连接数据库,所以先下载MySql.Data.dll 和MySql.Web.dll (这个可以去官网下载,也可以直接百度)

然后把它们添加到你的项目的引用里面,方法:解决方案---引用---添加引用---浏览---打开这两个文件的下载路径即可

最后要在代码中添加它们的命名空间:

using MySql.Data.MySqlClient;  using System.Data.SqlClient; 

Form1.cs[设计] 如下图所示


上代码

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;using MySql.Data.MySqlClient;  using System.Data.SqlClient;  namespace WindowsFormsApplication9{    public partial class Form1 : Form    {            //Check按键--选择全部        private void btnCheck_Click(object sender, EventArgs e)        {            string sqlStr = "select * from sheet1";     //sql语句            sqlResult(sqlStr);                          //代码重构        }                //Select按键--仅查询学号,姓名        private void btnSelect_Click(object sender, EventArgs e)        {            string selectStr= "select 学号,姓名 from sheet1";            sqlResult(selectStr);                       //代码重构        }        //Add按键--添加纪录        private void btnAdd_Click(object sender, EventArgs e)        {            string addStr = "INSERT INTO sheet1(学号,姓名,组别,作业网址)VALUES('201211672213','李柳红','1','http://blog.csdn.net/shenmeguia')";            sqlResult(addStr);            //因为这里是添加语句,它不会自动显示添加后的数据,所以要把全部的数据查询一遍才再能显示            string sqlStr = "select * from sheet1";               sqlResult(sqlStr);        }        //Upda按键--修改学号201211672213        private void btnUpdate_Click(object sender, EventArgs e)        {            string updateStr = "update sheet1 set 学号='2012000000'where 学号='201211672213'";            sqlResult(updateStr);            string sqlStr = "select * from sheet1";            sqlResult(sqlStr);        }        //Delete按键--删除学号为2012000000的记录        private void btnDelete_Click(object sender, EventArgs e)        {            string deleteStr = "delete from sheet1 where 学号='2012000000'";//            sqlResult(deleteStr);            string sqlStr = "select * from sheet1";            sqlResult(sqlStr);        }        //多表操作        private void btnCreateTable_Click(object sender, EventArgs e)        {           string tableStr = "create table student(Sno varchar(255),Sclass varchar(255),Sname varchar(255),Sscore varchar(255))";           sqlResult(tableStr);           string sql = "insert into student(Sno,Sclass,Sname,Sscore) Select sheet1.学号 as Sno,sheet2.班级 as Sclass,sheet1.姓名 as Sname,sheet2.互评学生分数 as Sscore from sheet1,sheet2  where sheet2.学号=sheet1.学号 ";           sqlResult(sql);           string sqlStr = "select * from student";           sqlResult(sqlStr);        }               //数据库的连接以及sql语句的操作        private void sqlResult(string sqlStr)        {            string connectionString = "Host=127.0.0.1;UserName=root;Password=;Database=cs;CharSet=utf8;";            MySqlConnection connection = new MySqlConnection(connectionString);            try            {                MySqlDataAdapter sql_da = new MySqlDataAdapter(sqlStr, connection);                DataSet sql_ds = new DataSet();                sql_da.Fill(sql_ds, "sqlTable");                dataGridView1.DataSource = sql_ds.Tables["sqlTable"];              //MessageBox.Show("SQL语句操作成功");            }            catch (SqlException ex)            {                       /*MessageBox.Show("SQL语句操作失败");*/                throw ex;            }        }        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {        }    }}

在做作业的时候,我一直在想,对数据库表格的增、删、查、改、建库建表什么的无非就是SQL语句不同,其他连接数据库的代码、把操作结果显示在dataGridView的代码应该都一样,所以我就想着看能不能这两部分的代码重构,居然可以。所以就提取出 

private void sqlResult(string sqlStr)

这个方法,然后各种操作只要变一下sqlStr (也就是各自的sql语句)这个参数就行了。例如查询操作

//Select按键--仅查询学号,姓名        private void btnSelect_Click(object sender, EventArgs e)        {            string selectStr= "select 学号,姓名 from sheet1";            sqlResult(selectStr);                       //代码重构        }

运行结果

CheckAll按钮——查询sheet1的所有记录


Select按钮——查询sheet1的学号,姓名


Add按钮——添加记录


Update按钮——更改学号,将学号更新为2012000000


Delete按钮——删除学号为2012000000的记录


目标3:多表操作

先把Grade_FirstExercise.xls 按照目标1的方法导入进来,命名为sheet2。因为sheet1有学号和姓名,sheet2有班级和成绩,要对sheet1和sheet2进行多表操作,再将操作结果添加到新建的Table表里(我这里建的是Student表)。这样就要先创建Student表,然后再插入记录。

代码

//多表操作        private void btnCreateTable_Click(object sender, EventArgs e)        {           string tableStr = "create table student(Sno varchar(255),Sclass varchar(255),Sname varchar(255),Sscore varchar(255))";           sqlResult(tableStr);            //创建Student表           string sql = "insert into student(Sno,Sclass,Sname,Sscore) Select sheet1.学号 as Sno,sheet2.班级 as Sclass,sheet1.姓名 as Sname,sheet2.互评学生分数 as Sscore from sheet1,sheet2  where sheet2.学号=sheet1.学号 ";           sqlResult(sql);            //进行多表操作并插入记录           string sqlStr = "select * from student";           sqlResult(sqlStr);        }             
运行结果

点击Table按键


这时候打开navicat for MySQL ,发现多了student表


到此这次作业就全部做完了。谢谢观赏




0 0
原创粉丝点击