.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

参考示例代码,如下所示:

        /// <summary>
	/// MySql 数据库操作类
	/// </summary>
	public class MySqlHelper
	{
		#region MysqlConnection
		private static MySql.Data.MySqlClient.MySqlConnection _mysqlConnection;
		/// <summary>
		/// MySqlConnection 连接信息
		/// </summary>
		public static MySql.Data.MySqlClient.MySqlConnection MysqlConnection
		{
			get
			{
				String mysqlConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Libor_MySql_QuoteCenter_ConnectionString"].ToString();

				if (_mysqlConnection == null)
					_mysqlConnection = new MySql.Data.MySqlClient.MySqlConnection(mysqlConnectionString);

				if (_mysqlConnection.State == System.Data.ConnectionState.Closed)
					_mysqlConnection.Open();

				if (_mysqlConnection.State == System.Data.ConnectionState.Broken)
				{
					_mysqlConnection.Close();
					_mysqlConnection.Open();
				}

				return MySqlHelper._mysqlConnection;
			}
		}
		#endregion

		#region 执行MySQL语句或存储过程,返回受影响的行数
		/// <summary>
		/// 执行MySQL语句或存储过程
		/// </summary>
		/// <param name="type">命令类型</param>
		/// <param name="sqlString">sql语句</param>
		/// <param name="pstmt">参数</param>
		/// <returns>执行结果</returns>
		public static int ExecuteNonQuery(CommandType type, String sqlString, MySql.Data.MySqlClient.MySqlParameter[] para)
		{
			try
			{
				using (MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand())
				{
					com.Connection = MysqlConnection;
					com.CommandText = @sqlString;
					com.CommandType = type;
					if (para != null)
						com.Parameters.AddRange(para);

					int val = com.ExecuteNonQuery();
					com.Parameters.Clear();

					return val;
				}
			}
			catch (Exception ex)
			{
				//Logger.Error("执行MySQL语句或存储过程,异常!", ex);

				return 0;
			}
			finally
			{
				if (MysqlConnection.State != ConnectionState.Closed)
					MysqlConnection.Close();
			}
		}

		/// <summary>
		/// 执行带事务的SQL语句或存储过程
		/// </summary>
		/// <param name="trans">事务</param>
		/// <param name="type">命令类型</param>
		/// <param name="sqlString">SQL语句</param>
		/// <param name="pstmt">参数</param>
		/// <returns>执行结果</returns>
		public static int ExecuteNonQuery(MySql.Data.MySqlClient.MySqlTransaction trans, CommandType type, String sqlString, MySql.Data.MySqlClient.MySqlParameter[] para)
		{
			try
			{
				using (MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand())
				{
					com.Connection = MysqlConnection;
					com.CommandText = @sqlString;
					com.CommandType = type;
					if (para != null)
						com.Parameters.AddRange(para);
					if (trans != null)
						com.Transaction = trans;

					int val = com.ExecuteNonQuery();
					com.Parameters.Clear();

					return val;
				}
			}
			catch (Exception ex)
			{
				//Logger.Error("执行MySQL语句或存储过程2,异常!", ex);

				return 0;
			}
			finally
			{
				if (MysqlConnection.State != ConnectionState.Closed)
					MysqlConnection.Close();
			}
		}
		#endregion

		#region 执行SQL语句或存储过程,返回 DataTable
		/// <summary>
		/// 执行SQL语句或存储过程,返回 DataTable
		/// </summary>
		/// <param name="type">命令类型</param>
		/// <param name="sqlString">SQL语句</param>
		/// <param name="pstmt">参数</param>
		/// <returns>执行结果</returns>
		public static DataTable ExecuteReaderToDataTable(CommandType type, String sqlString, MySql.Data.MySqlClient.MySqlParameter[] para)
		{
			DataTable dt = new DataTable();
			MySql.Data.MySqlClient.MySqlDataReader dr = null;

			try
			{
				using (MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand())
				{
					com.Connection = MysqlConnection;
					com.CommandText = @sqlString;
					com.CommandType = type;
					if (para != null)
						com.Parameters.AddRange(para);

					using (dr = com.ExecuteReader(CommandBehavior.CloseConnection))
					{
						if (dr != null)
							dt.Load(dr);

						com.Parameters.Clear();
						if (MysqlConnection.State != ConnectionState.Closed)
							MysqlConnection.Close();

					}

					return dt;
				}
			}
			catch (Exception ex)
			{
				//Logger.Error("执行SQL语句或存储过程,返回 DataTable,异常!", ex);

				return null;
			}
			finally
			{
				if (dr != null && !dr.IsClosed)
					dr.Close();

				if (MysqlConnection.State != ConnectionState.Closed)
					MysqlConnection.Close();
			}
		}
		#endregion

	}

特别说明:

1、MySql.Data.dll mysql官网提供的组件,下载后添加引用到当前项目即可使用

2、参数化处理

在SQLServer中参数化处理符号为"@",参数化示例如:

         SqlParameter[] param = {
               new SqlParameter("@TABLEDATA", tableData)
         };

在MySql中参数化处理符号为“?”,参数化示例如:

         MySql.Data.MySqlClient.MySqlParameter[] paras = {
		 new MySql.Data.MySqlClient.MySqlParameter("?LIBOR_NAME",name),
         };

其他参考文章如下:

http://www.jb51.net/article/30342.htm

时间: 2024-10-03 22:47:38

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper的相关文章

C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi

下载地址:http://dev.mysql.com/downloads/connector/net/ 安装指导 1.安装:mysql-connector-net-6.10.4.msi 其下载地址:http://dev.mysql.com/downloads/connector/net/ 在Windows10 操作系统安装mysql-connector-net-6.10.4.msi 默认是安装在C盘: 安装完后在应用工程中引用组件MySql.Data.dll. 然后在应用工程中引用组件:MySql

mysqli扩展库操作mysql数据库

配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 1 <?php 2 //mysqli扩展库操作mysql数据库,面向对象 3 $mysqli=new MySQLi("localhost","root","root","test"); 4 if($mysqli->connect_

Silverlight用户无法注册之MySql.Data.dll不一致

本篇博文记录本人解决一个"用户无法注册"的问题的过程 1 问题描述: 用户可以删除:但不能注册,也不能修改权限: 图 1用户注册失败 图 2修改用户权限出错 2 解决过程 1)粗暴方法:直接替换正确的工程 我将一个正确的Access和DataService 工程替换掉原来出错的Access和DataService,依然出错.甚至,我将UserManage和DataAccessSilverlight两个工程一起替换,依然不起作用. 图 3被替换掉的几个工程(这几个工程与用户管理相关) 2

php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo   mysql扩展库与mysql数据库区别 ? php设计者封装了一些方法去操作mysql数据库,这些方法集中起来形成了mysql扩展库.mysql数据库存放数据.     2.使用php的MySQL扩展库操作MySQL数据库案例: (1)环境搭建:启用MySQL数据库,在php.ini文件中配置使用MySQL数据库,          

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

ASP.net连接mysql数据库(使用MySql.Data.dll)

以前用ASP.net做web网站时用的都是sqlserver 数据库,也没有了解用mysql如何连接,遂今天试了下,多余就不说了,直接上步骤了. 首先我采用的是MySql.Data.dll这种方式连接数据库,我把放在百度云上了,大家可以下载:http://pan.baidu.com/s/1o78bql0 mysql的安装我就不多说了,傻瓜式安装即可,这里推荐一个可视化工具 可以方便看到数据库里的表:为了简单测试我就把数据库ll表里放了一个字段date 接下来,在ASP.net项目中右击添加MyS

关于Linux和Windows下部署mysql.data.dll的注册问题

mysql ado.net connector下载地址: http://dev.mysql.com/downloads/connector/net/ 选择版本: Generally Available Releases(1)是发布版(bug什么的较少的版本吧),而Development Releases(2)是开发版 我们采用1版本 Windows (x86, 32-bit), MSI Installer 该版本是window下的安装版,如果你安装了这个版本的话,在本机调试的时候可以不用再次注册

log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法

这两天遇到log4net写日志到mysql数据库中,有时候在A项目中可以,有时候B项目就有问题,有时候测试环境没问题,到正式部署环境又出问题,经过两天的煎熬,终于理清楚了其中的头绪. 1.配置现状 config文件中log4net配置节: <!--以下是log4net配置--> <log4net> <root> <level value="ALL" /> <appender-ref ref="AdoNetAppender&

使用Mysql.data.dll文件在服务器上运行访问Mysql

我使用的这个Mysql.data.dll文件 web.config上面主要需要声明以下代码 1 <system.data> 2 <DbProviderFactories> 3 <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient1" description=".Net Framework Data Provider for MySQL" t