如何在.NET中访问MySQL数据库

       
        使用ODBC.NET

  ODBC.NET(全称ODBC .NET Data Provider)是一个免费的.NET Framework附加组件,需要到微软公司的网站上去下载,它需要系统已经安装MDAC 2.7或者更高版本。另外,还需要安装MySQL的ODBC驱动程序,还需要在"ODBC数据源管理器"中配置一下DSN,如下图所示:

  在对象的设计上,ODBC.NET也跟OLEDB,SQL等一样,分别为OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader,用法也完全一样,如果希望用ODBC .NET来代替以前的OleDb .NET Data Provider,事实上完全可以通过查找替换的办法来修改程序。

  1.  try

  2.   {

  3.      string constr = "DSN=MySQL;" + "UID=;" +"PWD="; ;

  4.      conn = new OdbcConnection(constr);

  5.      conn.Open();

  6.      string query = "insert into test.dbtable values10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";

  7.      string tmp = null;

  8.      OdbcCommand cmd = new OdbcCommand(query, conn);

  9.      for(int i = 0; i < 100000; i++)

  10.      {

  11.        cmd.ExecuteNonQuery();

  12.      }

  13.      cmd.Dispose();

  14.      conn.Close();

  15.      query = "select * from test.dbtable";

  16.      OdbcCommand cmd2 = newOdbcCommand(query, conn);

  17.      conn.Open();

  18.      OdbcDataReader reader = cmd2.ExecuteReader();

  19.      while(reader.Read())

  20.      {

  21.        tmp = reader[0].ToString();

  22.        tmp = reader[1].ToString();

  23.        tmp = reader[2].ToString();

  24.        tmp = reader[3].ToString();

  25.      }

  26.      conn.Close();

  27.      query = "delete from test.dbtable";

  28.      OdbcCommand cmd3 = newOdbcCommand(query, conn);

  29.      conn.Open();

  30.      cmd3.ExecuteNonQuery();

  31.   }

  32.   catch(Exception ex)

  33.   {

  34.     MessageBox.Show(ex.Message);

  35.   }

  36.   finally

  37.   {

  38.     conn.Close();

  39.   }
上面的代码执行了十万次插入数据和读取数据,最后将数据记录全部删除的操作。


        使用MySQLDriverCS

        可能大部分的人都不知道这个东西,MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql .NETData Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL .NET DataProvider。使用他不需要额外的去设置ODBC数据源,基本上只要能连接到MySQL就能通过MySQLDriverCS来访问。

  MySQLDriverCS是SourceForge.NET上的一个项目,不过不知道什么原因,这个网站在国内访问不到。

        下面是使用MySQLDriverCS的代码示例:

  1.      MySQLConnection conn = null;


  2.   try

  3.   {

  4.     string connstr = "Data Source=MySQL;Password=root;User ID=root;Location=localhost";


  5.     conn = new MySQLConnection(constr);


  6.     conn.Open();


  7.     string query = "insert into test.dbtable values(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";


  8.     string tmp = null;


  9.     MySQLCommand cmd = new MySQLCommand(query, conn);


  10.     for(int i = 0; i < 100000; i++)


  11.     {


  12.       cmd.ExecuteNonQuery();


  13.     }

  14.     cmd.Dispose();


  15.     conn.Close();


  16.     query = "select * from test.dbtable";


  17.     MySQLCommand cmd2 = new MySQLCommand(query, conn);


  18.     conn.Open();


  19.     MySQLDataReader reader = cmd2.ExecuteReaderEx();


  20.     while(reader.Read())


  21.     {

  22.       tmp = reader[0].ToString();


  23.       tmp = reader[1].ToString();


  24.       tmp = reader[2].ToString();


  25.       tmp = reader[3].ToString();


  26.     }

  27.     conn.Close();


  28.     query = "delete from test.dbtable";


  29.     MySQLCommand cmd3 = new MySQLCommand(query, conn);


  30.     conn.Open();


  31.     cmd3.ExecuteNonQuery();


  32.   }


  33.   catch(Exception ex)


  34.   {


  35.     MessageBox.Show(ex.Message);


  36.   }


  37.   finally


  38.   {


  39.     conn.Close();


  40.   }
和上面的那段代码几乎一模一样,所不同的是Odbc变成了MySQL,另外,需要注意的一点是Command的ExecuteReader方法在MySQLDriverCS中变成了ExecuteReaderEx。


        性能测试

  作为MySQL的专用数据驱动程序,MySQLDriverCS的速度大大快于 ODBC.NET是在情理之中的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值