创建简易数据库:C#+MySQL(无理论全实操)

创建简易数据库:C#+MySQL(无理论全实操)

  • 0.写前叨叨
  • 1.MySQL
    • 1.1 MySQL简介
    • 1.2 MySQL下载
    • 1.3 DataGrip下载与使用
    • 1.4 DataGrip中遇到的问题
  • 2.数据库编写
    • 2.1 MySQL与C#连接
    • 2.2 增
    • 2.3 删
    • 2.4 改
    • 2.5 查
    • 2.6 导出为Excel
    • 2.7 局域网下共享 MySQL 数据库连接
  • 3.总结

0.写前叨叨

    距离完成项目已经快两个月了,惊觉自学的数据库内容已经忘了差不多,这才赶紧写这才想起来要写写操作了,方便以后温习!

1.MySQL

   首先,学习一门语言先要知道它是什么,有什么用,简单介绍介绍MySQL

1.1 MySQL简介

   MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
   MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。其特点是体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

   总而言之,可以理解为使用MySQL可以写出一个简陋版的Excel,但是这个“Excel”的可编程性更强,而且能够和同一个局域网内的用户交流,编辑、修改、保存同一个数据库表格。

1.2 MySQL下载

   下载也比较简单,进入下载网址,选择自己想要的版本,下载图片中红色框选的Installer
下载好之后看这个哔哩哔哩中的学习、下载教程,很快就能学会的,里面的老师讲的还挺详细的。

创建简易数据库:C#+MySQL(无理论全实操)_第1张图片


1.3 DataGrip下载与使用

   虽然MySQL下载好了,但是你很快就会发现MySQL的编译器非常原始,参考python的IDEA。DataGrip的用途类似Pycharm,也是一个编译器,使用起来很方便,有些地方甚至能自己生成代码,同样在这个学习、下载教程。
   所以说Jetbrains公司YYDS!

1.4 DataGrip中遇到的问题

   1.要先下载并且安装好MySQL,才能和DataGrip连接。年少无知的时候MySQL都没装好就用DataGrip,这个顺序是不对的。

   2.根据指示创建用户root与密码,确定serve主机localhost。创建无误之后与MySQL驱动通信,测试时遇到无法连接的问题。需要提前下载安装好MySQL Community,发生错误是因为没有安装社区,安装后还需要再URL后加上时区,否则也会报错。输入的URL为:
                               jdbc:mysql://localhost:3306?serverTimezone=UTC
创建简易数据库:C#+MySQL(无理论全实操)_第2张图片

2.数据库编写

   使用C#和MySQL联合编写一个数据库,其功能包括增删查改等,以下将一一展示代码。原本想将所有资料开源,但是数据库集成到一个大的project里面了(含其他同学劳动成果),不好分割出来,所以大家一个个看、一个个学吧。

   界面设计如下,只是一个简易数据库,大佬轻喷!创建简易数据库:C#+MySQL(无理论全实操)_第3张图片
   DataGrip中的表格设计包含两个表,一个是diary记录芯片数据,另一个是testy记录操作日志。两个表格的id相互关联,testy中的id是自增模式,而diary中的id序号是读取testy中的id生成的(一样的)。所以可以知道某一次的操作的对应芯片数据,方便查询

创建简易数据库:C#+MySQL(无理论全实操)_第4张图片


2.1 MySQL与C#连接

   在工具箱→NuGet包管理器→管理解决方案的NuGet程序包下载以下安装包。
创建简易数据库:C#+MySQL(无理论全实操)_第5张图片
   先对public class中加入以下代码:

        private MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
        private MySqlConnection connection;

   我这里的设置是点击按钮,完成连接,所以要自己先创建一个事件,事件中的代码如下:

        private void Connetc_database_Click(object sender, EventArgs e)
        {
            builder.UserID = "root";//root chip
            builder.Password = "请输入你的密码";//
            builder.Server = "localhost";// localhost
            builder.Database = "请输入你要进入的数据库名称";
            builder.AllowUserVariables = true;
            connection = new MySqlConnection(builder.ConnectionString);

            try
            {
                //打开数据库连接
                connection.Open();
                MessageBox.Show("数据库已经连接了!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

   最终效果:创建简易数据库:C#+MySQL(无理论全实操)_第6张图片

2.2 增

   增加的功能是手动增加操作员、设备状态、操作时间、芯片数量等。并且在按下按钮“一键写入”才完成。
   ⭐代码中的数据库信息要和你在DataGrip中创建的一致才行,不然会报错!
   由于每个人要输入记录的东西都不一样,这里只展现核心代码,会用就不成问题。

        private void One_click_input_basic_info_Click(object sender, EventArgs e)
        {
            //将时间转化为string格式,方便保存;
            time.Text = DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss");
            //以下是写入的核心关键,当时就是因为不知道特定语法卡了很久;记得一定要与DataGrip表格中字段对应!
            string sql = String.Format("insert into testy (operator,machineid,status,chip_number,rate,time)values('{0}','{1}','{2}','{3}','{4}','{5}');", operater.Text, machineid.Text, status.Text, chipnum.Text,rate.Text,time.Text);
            MySqlDataAdapter mda = new MySqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            mda.Fill(ds, "student");
            dataGridView1.DataSource = ds.Tables["help"];
            connection.Close();
            
        }

   还有一个显示表格的操作,很简单的,先需要创建dataGridView,然后加入以下代码,把testy这个表格在dataGridView中显示出来

        private void Show_table1_Click_1(object sender, EventArgs e)
        {
            string sql = "select * from testy";
            //string sql = "select max(id) from testy";
            MySqlDataAdapter mda = new MySqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            mda.Fill(ds, "worldlocationx");
            //显示数据
            dataGridView2.DataSource = ds.Tables["worldlocationx"];
            connection.Close();
        }

   最终展示效果:


2.3 删

   一定要先阅读代码,以下代码化为己用只需要改一些参数就行啦!
   下面删除的是选定dataGridView1的某一行(这里同步删除多行也行),删除的是表格diary内的数据。

 private void delete_location_info_Click(object sender, EventArgs e)
        {
            //定义计数值
            int count = 0;
            try
            {
                //连接数据库,我这里连接数据库的方法是自己写的,方法因人而异
                connection.Open();
                //connectMySQL();
                //for循环,dataGridView1.SelectedRows.Count为鼠标选中行的数目,一次for循环删除一行数据
                for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
                {
                    //获得i行的编号
                    int xpos = Convert.ToInt32(dataGridView1.SelectedRows[i].Cells[2].Value);
                    //编写数据库删除代码,这里还用到了动态变量,用于改变每次id值
                    string dataToDo3 = $"delete from diary where xpos = {xpos}";
                    //创建MySqlCommand类用于SQL语句的执行
                    MySqlCommand cmd = new MySqlCommand(dataToDo3, connection);
                    //定义x接收返回值SQL语句返回值,为0则为执行失败
                    int x = cmd.ExecuteNonQuery();
                    //执行判断
                    if (x == 0)
                    {
                        MessageBox.Show("删除失败");
                    }
                    //若成功则计数值+1
                    count = count + 1;
                }
                //若计数值等于选中行的数目,代表成功完成所有行的删除
                if (count == dataGridView1.SelectedRows.Count)
                {
                    MessageBox.Show("删除成功");
                }

            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
            }
            finally
            {

                connection.Close();
            }

        }

2.4 改

   改的功能是设置成能够直接在dataGridView中更改,所以需要创建一个事件dataGridView_CellBeginEdit
创建简易数据库:C#+MySQL(无理论全实操)_第7张图片
   在事件中的代码如下:

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {

            int id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
            int chipid = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
            int xpos = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());
            int ypos = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());       
            
            string sql = String.Format("insert into diary (id,chipid,xpos,ypos)values('{0}','{1}','{2}','{3}');", id,chipid,xpos,ypos);
            MySqlDataAdapter mda = new MySqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            mda.Fill(ds, "student");
            dataGridView1.DataSource = ds.Tables["help"];
            connection.Close();

        }

2.5 查

   查询功能是使用comboBox按键,查询表的特殊字段。在public Form中加入comboBox的声明代码:

        public Form3()
        {
            InitializeComponent();
            comboBox1.Items.AddRange(new string[] { "id", "chip_number", "rate", "time", "operator", "status", "machineID" });
            comboBox2.Items.AddRange(new string[] { "id", "chipid", "xpos", "ypos" });
        }

   在查询按钮事件中写入代码:

        private void search_record_Click(object sender, EventArgs e)
        {
            string sql = String.Format("select * from testy where {0} ='{1}';", comboBox1.Text, textBox5.Text);
            Console.WriteLine(sql);

            MySqlDataAdapter mda = new MySqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            mda.Fill(ds, "worldlocationx");
            //显示数据
            dataGridView2.DataSource = ds.Tables["worldlocationx"];
            connection.Close();
        }

2.6 导出为Excel

   需要在NuGet中下载一个GemBox.Spreadsheet方案包,然后正确引用using GemBox.Spreadsheet;输入以下代码即可导出显示在dataGridView2中的表格。

 private void export_basic_info(object sender, EventArgs e)
        {
            SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
            ExcelFile excelFile = new ExcelFile();
            ExcelWorksheet sheet = excelFile.Worksheets.Add("Test");

            int columns = dataGridView2.Columns.Count;
            int rows = dataGridView2.Rows.Count;

            for (int j = 0; j < columns; j++)
            {
                sheet.Cells[0, j].Value = dataGridView2.Columns[j].HeaderText;
            }
            for (int i = 1; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    sheet.Cells[i, j].Value = dataGridView2[j, i - 1].Value.ToString().Trim();
                }
            }
            excelFile.SaveXls("你想保存到的位置");
            MessageBox.Show("生成成功");
        }

2.7 局域网下共享 MySQL 数据库连接

   很多时候是多个管理者共同管理一个database,所以需要“联网”设置,大家直接参考这个方法就好了,也不难!

3.总结

    ⭐说难不难,从入门到上手用时不长。本篇目涉及的知识都是偏简单的,还需要深入学习,希望对大家有帮助!
创建简易数据库:C#+MySQL(无理论全实操)_第8张图片

你可能感兴趣的:(mysql,数据库,c#,学习,数据库开发)