前言:实验室目前一个项目是用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 = "失败!!!!!!!";
}
}
}
}
惭愧事件还没有搞清楚,等以后在修改吧。
六、运行结果
这一段写的不好,慢慢改进。。。。。。