日期:2014-05-18 浏览次数:20467 次
using System; using System.Collections; using System.Data; //using System.Data.SqlClient; using MySql.Data.MySqlClient; using System.Collections.Generic; using System.Configuration; namespace DAL { public static class MySQLHelper { //数据库连接字符串。 //连接字符串在界面层的webConfig的配置文件中。[设计为public是为了创建带事务的连接,因为连接将在DAL相关类中创建] private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["qkzx"].ConnectionString; private static MySqlConnection sqlcon = null; private static MySqlCommand sqlcmd = null; #region 执行SQL语句或存储过程,返回影响的行数 /// <summary> /// 执行SQL语句或存储过程,返回影响的行数 /// </summary> /// <param name="commandType">命令类型(存储过程, 文本, 表或视图)</param> /// <param name="commandText">存储过程名称或者sql命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns>执行命令所影响的行数</returns> public static int ExecuteNonQuery(CommandType commandType, string commandText, params MySqlParameter[] commandParameters) { MySqlCommand command = new MySqlCommand(); using (MySqlConnection connection = new MySqlConnection(ConnectionString)) { //为什么要调用准备执行命令这个方法:因为在此处可以加入一个事务控制。 PrepareCommand(command, connection, commandType, commandText, commandParameters); int val = command.ExecuteNonQuery(); command.Parameters.Clear(); return val; } } #endregion #region 执行一个返回读取器的sql命令 /// <summary> /// 用执行的数据库连接执行一个返回读取器的sql命令 /// </summary> /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param> /// <param name="commandText">存储过程名称或者sql命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns>包含结果的读取器</returns> public static MySqlDataReader ExecuteGetReader(CommandType commandType, string commandText, params MySqlParameter[] commandParameters) { //创建一个SqlCommand对象 MySqlCommand command = new MySqlCommand(); MySqlConnection connection = new MySqlConnection(ConnectionString); //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在, //因此commandBehaviour.CloseConnection 就不会执行 try { //调用 PrepareCommand 方法,对 SqlCommand 对象设置参数 PrepareCommand(command, connection, commandType, commandText, commandParameters); //调用 SqlCommand 的 ExecuteReader 方法 MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); //清除参数 command.Parameters.Clear(); return reader; //注意不能关闭连接,否则调用方无法读取数据。 } catch { //关闭连接,抛出异常 connection.Close(); throw; } } #endregion #region 执行命令,返回DataTable /// <summary> /// 执行命令,返回DataTable /// </summary> /// <param name="commandText">命令内容</param> /// <param name="commandType">命令类型</param> /// <param name="commandParameters">参数</param> /// <returns>DataTable数据表</returns> public static DataTable ExecuteGetDataTable(CommandType commandType, stri