C#连接操作 MySQL 数据库实例(使用官方驱动)

 更新时间:2020年6月25日 11:32  点击:2281

MySQL 以其免费和足够的性能受到很大的青睐,当然对于国内小公司,甚至是大公司如果对版权看得薄,敢冒险的话,随便装个 SqlServer、DB2、Oracle 都行。对于 SqlServer 数据库,因其与 MS 是一家,自然在 .net 类库中有内建支持,假如 MySQL 就得找第三方的驱动了 -- .net 中多讲 Provider。在这里我也是作为一个预研专题,记录下 C# 连接 MySQL 的两种方法,分别使用 MySQL 官方的和 SourceForge 上一个开源的 MySQL 驱动。至于 ODBC 的办法,就不提了,觉得意义不大,同样要安装个 MySQL ODBC 驱动,而且 ODBC 又如此之笨拙。

使用 MySQL 官方区动连接操作 MySQL 数据库

下载驱动,可在 http://www.mysql.com/downloads/connector/net/6.3.html#downloads 下载,当前版本是 6.3。你可以选择的平台既可以是 Microsoft Windows,也可以用 .Net & Mono 的,区别是 Microsoft Windows 的是一个MSI 文件,后者是非安装的压缩包。但是那个 MSI 文件在我的 64 位 XP 下安装不成功,所以用了后者。

这个 connector net 不光是个 MySQL 驱动,还提供了像 Entity Frameword、Asp.Net Web Providers、Compact Framework、VS 2008 集成的支持,还配置 CSharp 和 VB 的例子。详细的配置、使用文档请参考安装目录中的 MySql.Data.chm 文件。

现在从最简单的例子开始,驱动安装完,或压缩包解开后,甭里安装目录里的 mysql.data.cf.dll、mysql.data.entiry.dll、mysql.visualstudio.dll 和 mysql.web.dll,我们暂时在项目中引入 mysql.data.dll,用 using MySql.Data.MySqlClient; 引入命名空间。然后简单的代码如下:

复制代码 代码如下:

//连接字符串
 string connStr = "Server=localhost;Database=unmicc;Uid=unmicc;Pwd=xxxxxx;CharSet=utf8;";
 MySqlConnection con = new MySqlConnection(connStr);
 
 con.Open();//打开连接
 
 MySqlCommand cmd = new MySqlCommand("select now()",con);
 
 object time = cmd.ExecuteScalar(); //或是 cmd.ExecuteReader();cmd.ExecuteNonQuery();
 
 MessageBox.Show(time.ToString());
 //或 Console.WriteLine(time.ToString());
 
 con.Close();
 

上面的连接字符串应该好理解,另外还有更多的配置参数,例如端口号、连接池相关的配置等,具体请参考手册中的 Connection Options。其他的操作就是标准的 ADO.NET 的了,再就是可以处理各步骤的异常,catch MySql.Data.MySqlClient.MySqlException 这个类型的异常。其他的用于填充数据的 MySqlDataAdapter 和  MySqlDataReader 也是备好了的。

我想,在做正式的应用时,为防止 SQL 注入时关于参数化查询肯定会被提出来的,那就来看看这个 MySQL 官方驱动如何处理参数化查询的。它所用的方式和 SqlServer Provider 是一样的,用 @author 这样的形式来标识参数,并且同样支持 AddWithValue(string name, object value) 的方式。请看代码:

复制代码 代码如下:

string sql = "update wp_posts set post_author=@author and post_status=@status where id=@id";
 
 //可以用 ? 号的形式,如,但 ? 号的形式不推荐使用
 //string sql = "update wp_posts set post_author=?author and post_status=?status where id=?id";
 
 MySqlCommand cmd = con.CreateCommand();
 cmd.CommandText = sql;
 
 cmd.Parameters.AddWithValue("@author", 1);
 //cmd.Parameters.AddWithValue("?author", 1);
 cmd.Parameters.AddWithValue("@status", "publish");
 //cmd.Parameters.AddWithValue("?status", "publish");
 cmd.Parameters.AddWithValue("@id", 23);
 //cmd.Parameters.AddWithValue("?id",23);
 
 cmd.ExecuteNonQuery();

注意到,同时还能用 ?author 的形式来标识参数,不过现在不推荐这么用了,也许是为了统一成 @author 的格式吧。不知道什么时候能像 JDBC 一样,直接用 ? 来作为占位符。

对于 InnoDB 存储引擎的 MySQL 是支持事物的,这个官方的的驱动支持事物的代码如下:
[code]
MySqlTransaction trans = con.BeginTransaction(); //启用事物
 trans.Commit(); //正常时提交
 trans.Rollback(); //异常时回滚
[code]
下一篇将介绍如何使用 SourceForge 上的开源 MySQL .Net 驱动怎么去操作 MySQL 数据库的。

[!--infotagslink--]

相关文章

  • C#实现简单的登录界面

    我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望大家能够喜欢。...2020-06-25
  • 浅谈C# 字段和属性

    这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • C#实现简单的Http请求实例

    这篇文章主要介绍了C#实现简单的Http请求的方法,以实例形式较为详细的分析了C#实现Http请求的具体方法,需要的朋友可以参考下...2020-06-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#中new的几种用法详解

    本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧...2020-06-25
  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • 使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • C#和JavaScript实现交互的方法

    最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • C#变量命名规则小结

    本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
  • C#绘制曲线图的方法

    这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • c#自带缓存使用方法 c#移除清理缓存

    这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
  • c#中(&&,||)与(&,|)的区别详解

    这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 经典实例讲解C#递归算法

    这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25