首先,新建工程(Windows Application)
然后,增加引用(MySql.Data)
注意:根据使用.net版本的不同而选择MySql.Data版本
之后,放置控件
3个TextBox,2个ComboBox, 1个DataGridView等等
密码框设置
下拉框设置
数据格设置
连接按钮代码:
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;
运行效果:
操作步骤(1、2、3)
开发环境: VS2005
连接器(For .net):V6.8.3
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; 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; } } }
1. 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