MariaDB最近越來越熱,於是也下了個來搗騰搗騰。我下的是mariadb-10.0.4-win32.msi,但是安裝完後,想用C#進行連接時,發現沒有可以用的驅動。網上找了一番後,說是MaraiDB兼容MySQL,所以可以用MySql的驅動來連接。不過,有文提到MariaDB5.5相當於MySql的5.5,而MariaDB10.0.4相當於MySql5.6,而MySql現在已經是6.7了,所以下載MySql驅動的時候要特別注意,還有要注意的是mariadb是32還是64位的,搞錯了,連接會出問題。 在下MySql驅動的時候本來想在官網下的,但是要帳號,所以就另找了個鏡像點下。這是鏡像點http://mirrors.sohu.com/mysql/Connector-Net/,我下的是mysql-connector-net-5.2.7。 下面是具體實現的代碼
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 MariaDBTest { public partial class FormMain : Form { public FormMain() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } MySqlConnection connection_; private void buttonOpenConnect_Click(object sender, EventArgs e) { string connectionStr = "server=localhost;user id=root;password=abc;database=test"; connection_ = new MySqlConnection(connectionStr); connection_.Open(); MessageBox.Show("Connect OK!"); } private void buttonSelect_Click(object sender, EventArgs e) { if (connection_ == null) { MessageBox.Show("Please open connect!"); return; } string sql = "SELECT * FROM MyTable"; MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection_); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); dataGridViewMariaDB.DataSource = dataTable; } private void buttonCloseConnect_Click(object sender, EventArgs e) { if (connection_ != null) { connection_.Close(); MessageBox.Show("Connect Close!"); } } private void buttonInsert_Click(object sender, EventArgs e) { if (connection_ == null) { MessageBox.Show("Please open connect!"); return; } int no = DateTime.Now.Second; int sum = DateTime.Now.Millisecond; string sql = string.Format("INSERT INTO MyTable (`NO`,`Sum`) VALUES({0},{1});", no, sum); MySqlCommand command = new MySqlCommand(sql, connection_); int affectLines = command.ExecuteNonQuery(); MessageBox.Show("Affect " + affectLines.ToString() + " line"); } private void buttonDelete_Click(object sender, EventArgs e) { if (connection_ == null) { MessageBox.Show("Please open connect!"); return; } int no = Convert.ToInt32(textBoxNO.Text); string sql = string.Format("DELETE FROM MyTable WHERE `NO`={0}", no); MySqlCommand command = new MySqlCommand(sql, connection_); int affectLines = command.ExecuteNonQuery(); MessageBox.Show("Affect " + affectLines.ToString() + " line"); } } }
這裡有幾點需要注意的: 1、用MySql操作的語言和操作MSSQL的語法沒有太大的差異,但是SQL的語句有差異。在MSSQL中單引號用的是鍵盤上回車鍵左邊單引呈鍵,而MariaDB中的單引號用的是鍵盤上數字鍵那一行最左邊的鍵(數字1鍵的左邊)。最開始被這個折騰慘了,後面經過比對後才發現的。 2、代碼中所用的數據庫test和MyTable需要自己建立。建立的方法可以通過HeidiSQL來操作。 3、要記得引用MySql.data.dll. 4、如果發現有MariaDB的語法不太理解,可以打開HeidiSQL,然後進行相應的操作,這時在下方會顯示相應的代碼,如我們插入了一些數據,下面會顯示插入的SQL語句,然後把這個語句來到C#中用就OK了。