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驱动的时候本来想在官网下的,但是要帐号,所以就另找了个镜像点下。这是镜像点,我下的是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);
}
}
}
这里有几点需要注意的:
