关于mysql-connector-net在C#中的用法
mysql-connector-net-8.0.11.msi 可以從這里下載:mysql-connector-net-8.0.11
?
如果使用ado.net鏈接mysql數據庫則只需要引用 ?MySql.Data.dll即可,并不需要安裝mysql-connector-net驅動程序;
如果使用EF的話需要安裝mysql-connector-net驅動程序和mysql-for-visualstudio 這個vs里面鏈接數據源的插件,否則EF無法使用VS視圖模型的瀏覽和創建以及更新數據庫實體;
?
其中mysql-connector-net驅動程序安裝目錄包含了
MySql.Data.dll;
MySql.Data.Entity.EF5.dll;
MySql.Data.Entity.EF6.dll;
MySql.Fabric.Plugin.dll;
MySql.Web.dll;
?
注意:就算把mysql-connector-net安裝目錄下所有的類庫都拷到bin目錄而不在應用站點服務器上安裝mysql-connector-net驅動程序,EF代碼還是會報錯,因為mysql-connector-net安裝不僅裝了各種dll類庫,還寫過機器上.net環境的全局的machine.config里加過
<system.data>
? <DbProviderFactories>
? <add name="MySQL Data Provider"
? invariant="MySql.Data.MySqlClient"
? description=".Net Framework Data Provider for MySQL"
? type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.6.0, Culture=neutral, ? ? ? ?PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>,
所以要使用EF必須在站點服務器安裝mysql-connector-net啟動程序(數據庫所在的服務器不需要安裝,只需要C#程序所運行的電腦需要安裝)或者在應用的web.config文件里configuration節點下加上上面的配置
或者在應用所在機器的
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
?
文件里加上上面的配置。
?
需要注意的是:當機器已經裝上了mysql-connector-net驅動的時候,再加這配置就會造成name重復而報錯。
?
下面給出例子:
using System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
/*
?本程序使用 MySql.Data.dll 鏈接Mysql數據庫,讀取服務器中所有數據庫的名稱,顯示在界面上。HoverTree
? ? ?*/
namespace MysqlHoverTree
{
? ? public partial class Form1 : Form
? ? {
? ? ? ? private MySqlConnection _conn;
? ? ? ? public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }
? ? ? ? private void button_connect_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? if (_conn != null)
? ? ? ? ? ? ? ? _conn.Close();
? ? ? ? ? ? string h_connString = "server=localhost;user id=root; password=123456; port=3306; database=mysql; pooling=false; charset=utf8";//根據實際修改
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _conn = new MySqlConnection(h_connString);
? ? ? ? ? ? ? ? _conn.Open();
? ? ? ? ? ? ? ? GetDatabases();
? ? ? ? ? ? ? ? MessageBox.Show("連接數據庫成功!");
? ? ? ? ? ? }
? ? ? ? ? ? catch (MySqlException ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? MessageBox.Show("Error connecting to the server: " + ex.Message);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void GetDatabases()
? ? ? ? {
? ? ? ? ? ? MySqlDataReader reader = null;
? ? ? ? ? ? MySqlCommand cmd = new MySqlCommand("SHOW DATABASES", _conn);
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? reader = cmd.ExecuteReader();
? ? ? ? ? ? ? ? listBox_database.Items.Clear();
? ? ? ? ? ? ? ? while (reader.Read())
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? listBox_database.Items.Add(reader.GetString(0));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? catch (MySqlException ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? MessageBox.Show("Failed to populate database list: " + ex.Message);
? ? ? ? ? ? }
? ? ? ? ? ? finally
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (reader != null) reader.Close();
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
總結
以上是生活随笔為你收集整理的关于mysql-connector-net在C#中的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动软代码生成器 模板
- 下一篇: ES6之Module的语法(1)