MySQL Connector/Net 的簡單使用

連接器(For .net):V6.9.11       

 

首先,新建工程(Windows Application)

 

然後,增加引用(MySql.Data)

 

 

 

        之後,放置控件

        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;

 

        運行效果:

 

操作步驟(1、2、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;        
         }    
    }
}

 

Reference:

 

1. dotnet and mysql connector

   

Table 2.1 Connector/NET Requirements

Connector/NET Version ADO.NET Version .NET Version Required MySQL Server Supported?
8.0 2.x+
  • C/NET 8.0.18+: .NET Core 3.0 for VS 2019 (version 16.3 or higher)

  • C/NET 8.0.17+: .NET Core 2.2 for VS 2017 (version 15.0.9 or higher), .NET Core 2.1 for VS 2017 (version 15.0.7 or higher)

  • C/NET 8.0.10+: .NET Core 2.0 for VS 2017 (version 15.0.3 or higher)

  • C/NET 8.0.8+: .NET Framework 4.5.x for VS 2013 / 2015 / 2017

8.0, 5.7, 5.6 Yes
6.10 2.x+
  • C/NET 6.10.9+: .NET Core 2.2 for VS 2017 (version 15.0.9 or higher), .NET Core 2.1 for VS 2017 (version 15.0.7 or higher)

  • C/NET 6.10.5+: .NET Core 2.0 for VS 2017 (version 15.0.3 or higher)

8.0, 5.7, 5.6 Upgrade to 8.0

 

 

FAQ:

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

 

 

2. Interop type cannot be embedded

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章