Connector/NET Version | ADO.NET Version | .NET Version Required | MySQL Server | IDE |
---|---|---|---|---|
6.9 | 2.x+ | 3.5+ for VS 2008, 4.x+ for VS 2010 / 2012 / 2013, WinRT for VS 2012 / 2013 | 5.7, 5.6, 5.5 | Visual Studio 2010 |
6.1 | 2.x+ | 2.x+ | 5.6, 5.5, 5.1, 5.0, 4.1 | Visual Studio 2008 |
连接器(For .net):
- vs2008/2010
V6.1.6 - vs2015
v6.9.8 - dotnet and mysql connector - vs2019
v8.0.32
新建工程 - Windows Application
- vs2008
- vs2019
增加引用(MySql.Data)
- vs2008
- vs2019
放置控件
3个TextBox,2个ComboBox(cBoxDBs和cBoxTables), 1个DataGridView等等
密码框设置
下拉框设置(cBoxDBs:数据库,cBoxTables:数据表)
数据格设置
代码
连接按钮:
string connStr = string.Format("server={0};user id={1}; password={2}; database=mysql; pooling=false",
edtSrv.Text, edtUser.Text, edtPwd.Text);
try
{
conn = new MySqlConnection(connStr);
conn.Open();
// 获得数据库列表
List<string> cmd = new List<string>();
cmd.Add("SHOW DATABASES");
List<string> list = getDataList(cmd);
// 清空下拉框
cBoxDBs.Items.Clear();
// 增加下拉框列表
foreach (string str in list)
cBoxDBs.Items.Add(str);
}
catch(MySqlException ex)
{
MessageBox.Show("没有找到数据库: " + ex.Message);
}
下拉框(数据库列表)
// 获得数据库列表
List<string> cmdList = new List<string>();
cmdList.Add("USE " + cBoxDBs.SelectedItem.ToString());
cmdList.Add("SHOW TABLES");
List<string> list = getDataList(cmdList);
// 清空下拉框
cBoxTables.Items.Clear();
// 增加下拉框列表
foreach (string str in list)
cBoxTables.Items.Add(str);
下拉框(数据表列表)
// 获得数据表名称
string tableName = cBoxTables.SelectedItem.ToString();
// 设置数据桥
dataAdapter = new MySqlDataAdapter("Select * from " + tableName, conn);
// DataSet
sqlCmdBuilder = new MySqlCommandBuilder(dataAdapter);
// 建立数据表
table = new DataTable(tableName);
// 填充数据表到数据桥
dataAdapter.Fill(table);
// 指定数据源
dataGridView1.DataSource = table;
运行效果:
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace testMySQL
{
public partial class frmain : Form
{
private MySqlConnection conn;
private DataTable table;
private MySqlDataAdapter dataAdapter;
private MySqlCommandBuilder sqlCmdBuilder;
public frmain()
{
InitializeComponent();
}
private void btnConn_Click(object sender, EventArgs e)
{
//
string connStr = string.Format(
"server={0}; user id={1}; password={2}; database=mysql; pooling=false",
edtSrv.Text, edtUser.Text, edtPwd.Text);
try
{
conn = new MySqlConnection(connStr);
conn.Open();
// 获得数据库列表
List<string> cmd = new List<string>();
cmd.Add("SHOW DATABASES");
List<string> list = getDataList(cmd);
// 清空下拉框
cBoxDBs.Items.Clear();
// 增加下拉框列表
foreach (string str in list)
cBoxDBs.Items.Add(str);
}
catch(MySqlException ex)
{
MessageBox.Show("没有找到数据库: " + ex.Message);
}
}
private List<string> getDataList(List<string> cmdList)
{
List<string> result = new List<string>();
// SQL数据读取器
MySqlDataReader dataReader = null;
// SQL命令执行器
MySqlCommand sqlCmd = new MySqlCommand();
// 设置SQL命令执行器的连接
sqlCmd.Connection = conn;
try
{
// 执行的SQL命令
foreach (string cmd in cmdList)
{
sqlCmd.CommandText = cmd;
sqlCmd.ExecuteNonQuery();
}
//
dataReader = sqlCmd.ExecuteReader();
while(dataReader.Read())
{
string strDbName = dataReader.GetString(0);
result.Add(strDbName);
}
}
catch (MySqlException ex)
{
MessageBox.Show("读取数据失败: " + ex.Message);
}
finally
{
if (dataReader != null)
dataReader.Close();
}
return result;
}
private void cBoxDBs_SelectedIndexChanged(object sender, EventArgs e)
{
// 获得数据库列表
List<string> cmdList = new List<string>();
cmdList.Add("USE " + cBoxDBs.SelectedItem.ToString());
cmdList.Add("SHOW TABLES");
List<string> list = getDataList(cmdList);
// 清空数据表列表
cBoxTables.Items.Clear();
// 增加下拉框列表
foreach (string str in list)
cBoxTables.Items.Add(str);
}
private void cBoxTables_SelectedIndexChanged(object sender, EventArgs e)
{
// 获得数据表名称
string tableName = cBoxTables.SelectedItem.ToString();
// 设置数据桥
dataAdapter = new MySqlDataAdapter("Select * from " + tableName, conn);
// DataSet
sqlCmdBuilder = new MySqlCommandBuilder(dataAdapter);
// 建立数据表
table = new DataTable(tableName);
// 填充数据表到数据桥
dataAdapter.Fill(table);
// 指定数据源
dataGridView1.DataSource = table;
}
}
}
FAQ
- Unable to convert MySQL date/time value to System.DateTime
出现原因: DateTime列含有“0000-00-00”(YYYY-mm-dd)或者“0000-00-00 00:00:00”(YYYY-mm-dd HH:mm:ss)数据
解决办法: 增加“Convert Zero Datetime=True”
server={0}; user id={1}; password={2}; database=mysql; pooling=false; Convert Zero Datetime=True