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了。