《C#程序设计》第四次作业:MySQL数据库及C#操作MySQL数据库

来源:互联网 发布:oracle修改数据库字段 编辑:程序博客网 时间:2024/05/20 12:46
《C#程序设计》第四次作业:MySQL数据库及C#操作MySQL数据库

【目的】
1.掌握MySQL数据库的使用方法。
2.掌握C#操作MySQL数据库的方法。
3.了解C#操作其他数据库(Access,MS SQL Server等)的方法。

【目标】
目标1:MySQL数据库的基本操作,包括MySQL的安装、创建数据库、数据表、增删改查操作(80分)。
目标2:C#操作MySQL数据库,包括基本步骤和具体的编码实现(90分)。
目标3:C#编程实现MySQL数据库的多表操作(100分)。

【方法】
1. 遇到问题,想办法解决问题。有智慧=找原因+想办法。充分利用百度、Google进行搜索。
2. 先达成初步目标,再逐步深入、凝练、总结。

【作业要求】
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说创建的表格与互评成绩,最终得到每次作业中学生成绩的汇总。

【心得体会】
丁老师跟我说数据的噪声,对我触动比较大,以前对这方面简直可以说是0了解,通过这次作业对这方面已经有了不少的认识,由于个人水平还不到,对于数据的剔除,只能做删除工作,无法校正学生姓名方面的错误,例如 “钟籼豆”和“钟秈豆”这种错误数据,判断语句实在不知道怎么写,可能能用相似度来做?还是用某人没有成绩,而剩余数据里有相似数据,然后强行揉合在一起?这玩意得以后学学。
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data.MySqlClient;namespace MultiTableOperate{    class Program    {           public DataTable table1 = new DataTable();        public MySqlConnection myconn = new MySqlConnection();        public DataSet ds = null;        static void Main(string[] args)        {            Program a = new Program();            // 实例化            String path = "F:\\Sam\\素材\\c#\\Grade_FirstExercise.xls";            a.ExcelToDs(path);            // 加载Excel            a.ConnectToMySql();            // 连接MySql            a.insert();            // 插入数据            a.updata();            // 剔除错误数据        }        private void updata()        {            MySqlCommand udata = new MySqlCommand();            udata.Connection = myconn;            string sql = "create table tmp2 as select max(id) as col1 from tmp group by num;  delete from tmp where id not in(select col1 from tmp2);  drop table tmp2;";            // 由于MySql不支持单语句同时执行同一表的select和update操作,只能新建一个相同结构、相同内容的临时表tmp2。            // 剔除同一个人输入多个数据的错误,判断理由是,以该学生的最后一次数据更新为准。            udata.CommandText = sql;            udata.ExecuteNonQuery();            sql = "create table tmp2 as select max(num) as col1 from tmp group by name;  delete from tmp where num not in(select col1 from tmp2);  drop table tmp2;";            // 剔除多个人对同一人互评的错误数据,判断理由是,学号后面的人评论前一人,如果学号较前的人评论较后的人,视为错误数据。            udata.CommandText = sql;            udata.ExecuteNonQuery();            sql = "update table1 inner join tmp set table1.mark=tmp.mark where table1.name=tmp.name;";            // tmp表记录的学生姓名、成绩和table1表的学生姓名、学号关联起来。            udata.CommandText = sql;            udata.ExecuteNonQuery();            sql = "insert into table1(name,mark) select tmp.name,tmp.mark from tmp where tmp.name not in (select table1.name from table1);";            // 存在剩余数据,存入table1表            udata.CommandText = sql;            udata.ExecuteNonQuery();            sql = "drop table tmp;";            // 删除tmp表            udata.CommandText = sql;            udata.ExecuteNonQuery();        }        private void insert()        {            MySqlCommand a = new MySqlCommand();            a.Connection = myconn;            string sql = "delete from table1;";            // 清空表记录            a.CommandText = sql;            a.ExecuteNonQuery();            a.CommandText = "create table tmp(id int auto_increment primary key not null,name char(20),mark int,num char(20));";            // 创建记录学生学号、成绩的临时表tmp            a.ExecuteNonQuery();            foreach (DataRow dr in table1.Rows)            {                String id = "20121167";                String id1 = string.Copy(dr["学号"].ToString());                id += id1.Substring(id1.Length - 4, 4);                // 修正excel里错误的学号信息                try                {                    sql = "insert into table1 values('" + id + "','" + dr["姓名"] + "','1',' ')";                    // 往table1表插入学号和姓名信息,成绩为空,数据库已设置学号唯一,剔除重复数据。                    a.CommandText = sql;                    a.ExecuteNonQuery();                }                catch (Exception e)                {                }                                sql = "insert into tmp values(null,'" + dr["互评学生姓名"] + "','" + dr["互评学生分数"] + "','" + id + "')";                // 往tmp表插入学生姓名、成绩、以及评论该学生的学号,学号用于剔除多个人对同一人互评的错误数据。                a.CommandText = sql;                a.ExecuteNonQuery();            }                    }        private void ConnectToMySql()        {            string str = "data source=localhost;database=student;user id=root;password=\"\"";            // 连接MySql数据库,库名为student            myconn.ConnectionString = str;            myconn.Open();        }        public DataSet ExcelToDs(string path)        {            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + @path + ";" + "Extended Properties=Excel 12.0;";            // 使用OleDb驱动连接Excel            OleDbConnection conn = new OleDbConnection(strConn);            conn.Open();            string strExcel = "";            OleDbDataAdapter myCommand = null;            strExcel = "select*from[sheet1$]";            myCommand = new OleDbDataAdapter(strExcel, strConn);            ds = new DataSet();            myCommand.Fill(table1);            return ds;        }    }}




0 0
原创粉丝点击