使用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,事实上完全可以通过查找替换的办法来修改程序。
- try
- {
- string constr = "DSN=MySQL;" + "UID=;" +"PWD="; ;
- conn = new OdbcConnection(constr);
- conn.Open();
- string query = "insert into test.dbtable values10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
- string tmp = null;
- OdbcCommand cmd = new OdbcCommand(query, conn);
- for(int i = 0; i < 100000; i++)
- {
- cmd.ExecuteNonQuery();
- }
- cmd.Dispose();
- conn.Close();
- query = "select * from test.dbtable";
- OdbcCommand cmd2 = newOdbcCommand(query, conn);
- conn.Open();
- OdbcDataReader reader = cmd2.ExecuteReader();
- while(reader.Read())
- {
- tmp = reader[0].ToString();
- tmp = reader[1].ToString();
- tmp = reader[2].ToString();
- tmp = reader[3].ToString();
- }
- conn.Close();
- query = "delete from test.dbtable";
- OdbcCommand cmd3 = newOdbcCommand(query, conn);
- conn.Open();
- cmd3.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- finally
- {
- conn.Close();
- }
使用MySQLDriverCS
可能大部分的人都不知道这个东西,MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql .NETData Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL .NET DataProvider。使用他不需要额外的去设置ODBC数据源,基本上只要能连接到MySQL就能通过MySQLDriverCS来访问。
MySQLDriverCS是SourceForge.NET上的一个项目,不过不知道什么原因,这个网站在国内访问不到。
下面是使用MySQLDriverCS的代码示例:
- MySQLConnection conn = null;
- try
- {
- string connstr = "Data Source=MySQL;Password=root;User ID=root;Location=localhost";
- conn = new MySQLConnection(constr);
- conn.Open();
- string query = "insert into test.dbtable values(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
- string tmp = null;
- MySQLCommand cmd = new MySQLCommand(query, conn);
- for(int i = 0; i < 100000; i++)
- {
- cmd.ExecuteNonQuery();
- }
- cmd.Dispose();
- conn.Close();
- query = "select * from test.dbtable";
- MySQLCommand cmd2 = new MySQLCommand(query, conn);
- conn.Open();
- MySQLDataReader reader = cmd2.ExecuteReaderEx();
- while(reader.Read())
- {
- tmp = reader[0].ToString();
- tmp = reader[1].ToString();
- tmp = reader[2].ToString();
- tmp = reader[3].ToString();
- }
- conn.Close();
- query = "delete from test.dbtable";
- MySQLCommand cmd3 = new MySQLCommand(query, conn);
- conn.Open();
- cmd3.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- finally
- {
- conn.Close();
- }
性能测试
作为MySQL的专用数据驱动程序,MySQLDriverCS的速度大大快于 ODBC.NET是在情理之中的。