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

    科技2025-04-05  10

    前言:实验室目前一个项目是用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 = "失败!!!!!!!"; } } } }

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

    六、运行结果

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

    Processed: 0.010, SQL: 8