小白记录,以便回忆:C#连接MySQL数据库(运用事件处理,第四步为简单测试连接,需要的可以只看第四步)

前言:实验室目前一个项目是用C#写的界面,读取inSQL、SQLserver数据库中的数据转存到MySQL。正在一步一步看代码。
一、控件布局:
新建Windows窗体应用程序。添加标签、按钮、文本框,布局如下:
在这里插入图片描述
其中TextBox依次命名为textBox1-----textBox5,按钮为button1。
二、项目新添加一个类
右键点击项目名称——>添加——>新建项——>类
在这里插入图片描述
三、引用MySQL.data.dll。
MySql.Data.dll是C#操作MySQL的驱动文件,是C#连接MySQL必要插件
这个可以直接在nuget上搜索,可是我一直下载安装失败。没办法,只能从网上安装mysql-connector-net-6.9.9.msi。
其下载地址:http://dev.mysql.com/downloads/connector/net/
(注意:安装6.9.9。目前最新的8.0.21和20我安装上不好使。。。。。)
安装一直next,选择typical。问题不大。
我的安装位置为:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9。

资源管理器中右键点击“引用”,点击添加引用,选择“浏览”,找到上述位置:
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5
选择MySql.Data.dll。点击添加。
在这里插入图片描述
此时,引用中就已经有mysql.data了。
在这里插入图片描述
在代码页里输入using MySql.Data.MySqlClient;就可以顺利的使用该类库的函数建立连接了。

四、测试程序
重新新建一个项目,控制台应用程序,下面借鉴的网上大佬程序,进行测试连接的。网址为:https://blog.csdn.net/liyuqian199695/article/details/53556639?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;   //引用MySql


namespace Csharp调用mysql
{
    class Program
    {
        static void Main(string[] args)
        {
            string constructorString = "server=localhost;User Id=root;password=root;Database=qssf_main";
            MySqlConnection myConnnect = new MySqlConnection(constructorString);
            myConnnect.Open();
            MySqlCommand myCmd = new MySqlCommand("insert into t_dept(name,year) values('jjj',22)", myConnnect);
            Console.WriteLine(myCmd.CommandText);
            if (myCmd.ExecuteNonQuery() > 0)
            {
                Console.WriteLine("数据插入成功!");
            }
            myCmd.CommandText = "insert into t_dept(name,year) values('jjj4',22)";
            Console.WriteLine(myCmd.CommandText);
            if (myCmd.ExecuteNonQuery() > 0)
            {
                Console.WriteLine("数据插入成功!");
            }
            myCmd.CommandText = "delete from t_dept";
            Console.WriteLine(myCmd.CommandText);
            if (myCmd.ExecuteNonQuery() > 0)
            {
                Console.WriteLine("user表类型数据全部删除成功!");
            }
            myCmd.Dispose();
            myConnnect.Close();
        }
    }
}

其中:MySqlConnectionsqlCon= new MySqlConnection(“server=服务器的ip地址;user id=用户名;password=用户密码;database=数据库名字”);

五、自己代码

class1类中代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;

namespace mysqltest1007
{
    class Class1
    {
        private ConnectionState m_MySQLConnect_State;//MySQL 的状态,最后传到主界面显示
        public ConnectionState MySQLConnect_State1
        {
            get { return m_MySQLConnect_State; }
            set { m_MySQLConnect_State = value; }
        }
        public void MySQL_Connect_(string Server_MySQL, string UserId_MySQL, string Password_MySQL, string Database_MySQL)
          {

              MySqlConnection m_mysqlcon;//实例化MySQL

              try
               {
                   string conMySQL = "server=" + Server_MySQL + ";User Id=" + UserId_MySQL + ";password=" + Password_MySQL + ";Database=" + Database_MySQL + ";Persist Security Info=True;pooling=false;Charset=utf8;";
                   m_mysqlcon = new MySqlConnection(conMySQL);
                   m_mysqlcon.Open();
                   if (Convert.ToString(m_mysqlcon.State) == "Open" )
                      {
                       m_MySQLConnect_State = m_mysqlcon.State;
                      }
                  else
                      {
                          MessageBox.Show("链接有误,请重新链接");
                      }
                }
             catch
                {
                    MessageBox.Show("链接有误");
                }
          }


    }
}

Form.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;

namespace mysqltest1007
{
    public partial class Form1 : Form
    {
        Class1 class1 = new Class1();//新建的类class1,其中有我们要的函数
        public delegate void MySQLConnect_EventHander(string Ip, string UseName, string PassWord, string DadaBase);//委托
        public event MySQLConnect_EventHander MySQLConnect_State_Evevt;//事件,事件的处理器在下面

        public Form1()
        {
            MySQLConnect_State_Evevt += g_KMySQL_Connect_Form_MySQLConnect_State_Evevt;//事件订阅
            InitializeComponent();
        }
        //释放窗体内存
        public void MySQL_Connect_Form_CloseDispose()
        {
            this.Dispose();
            this.Close();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }


        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "127.0.0.1";//ip
            textBox2.Text = "root";//账户
            textBox3.Text = "root";//密码
            textBox4.Text = "qssf_main";//库
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MySQLConnect_State_Evevt(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);//事件
            //this.Close();
        }
         public void g_KMySQL_Connect_Form_MySQLConnect_State_Evevt(string Ip, string UseName, string PassWord, string DadaBase)//事件函数内容
        {
            //链接MySQL;
            class1.MySQL_Connect_(Ip, UseName, PassWord, DadaBase);
            
            //判断是否连接成功
            if (Convert.ToString(class1.MySQLConnect_State1) == "Open")
            {
                
                textBox5.Text = "mysql数据库连接成功!!!!";
            }
            else
            {
                
                textBox5.Text = "失败!!!!!!!";
            }
        }
    }
}

惭愧事件还没有搞清楚,等以后在修改吧。

六、运行结果
在这里插入图片描述

这一段写的不好,慢慢改进。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值