using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
using System.Collections;
using MySql.Data.Common;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Configuration;
using System.IO; namespace MSCL
{
/// <summary>
/// 先引用官网MySql.Data.dll文件
/// </summary>
public abstract class MYSQLHelper
{ /// <summary>
/// a valid database connectionstring
/// </summary>
public static string connectionStringManager = ConfigurationManager.AppSettings["MySqlConnStr"].ToString(); /// <summary>
/// a valid database connectionstring
/// </summary>
public static string ConnectionStringManager
{
get { return connectionStringManager; }
} //hashtable to store the parameter information, the hash table can store any type of argument
//Here the hashtable is static types of static variables, since it is static, that is a definition of global use.
//All parameters are using this hash table, how to ensure that others in the change does not affect their time to read it
//Before ,the method can use the lock method to lock the table, does not allow others to modify.when it has readed then unlocked table.
//Now .NET provides a HashTable's Synchronized methods to achieve the same function, no need to manually lock, completed directly by the system framework
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// <summary>
/// Execute a SqlCommand command that does not return value, by appointed and specified connectionstring
/// The parameter list using parameters that in array forms
/// </summary>
/// <remarks>
/// Usage example:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure,
/// "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">a valid database connectionstring</param>
/// <param name="cmdType">MySqlCommand command type (stored procedures, T-SQL statement, and so on.) </param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">MySqlCommand to provide an array of parameters used in the list</param>
/// <returns>Returns a value that means number of rows affected</returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand(); using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
} /// <summary>
/// Execute a SqlCommand command that does not return value, by appointed and specified connectionstring
/// The parameter list using parameters that in array forms
/// </summary>
/// <remarks>
/// Usage example:
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure,
/// "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
/// <param name="cmdType">MySqlCommand command type (stored procedures, T-SQL statement, and so on.) </param>
/// <param name="connectionString">a valid database connectionstring</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">MySqlCommand to provide an array of parameters used in the list</param>
/// <returns>Returns true or false </returns>
public static bool ExecuteNonQuery(CommandType cmdType, string connectionString, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand(); using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
try
{
int val = cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
cmd.Parameters.Clear();
}
}
}
/// <summary>
/// Execute a SqlCommand command that does not return value, by appointed and specified connectionstring
/// Array of form parameters using the parameter list
/// </summary>
/// <param name="conn">connection</param>
/// <param name="cmdType">MySqlCommand command type (stored procedures, T-SQL statement, and so on.)</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">MySqlCommand to provide an array of parameters used in the list</param>
/// <returns>Returns a value that means number of rows affected</returns>
public static int ExecuteNonQuery(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
} /// <summary>
/// Execute a SqlCommand command that does not return value, by appointed and specified connectionstring
/// Array of form parameters using the parameter list
/// </summary>
/// <param name="conn">sql Connection that has transaction</param>
/// <param name="cmdType">SqlCommand command type (stored procedures, T-SQL statement, and so on.)</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">MySqlCommand to provide an array of parameters used in the list</param>
/// <returns>Returns a value that means number of rows affected </returns>
public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
} /// <summary>
/// Call method of sqldatareader to read data
/// </summary>
/// <param name="connectionString">connectionstring</param>
/// <param name="cmdType">command type, such as using stored procedures: CommandType.StoredProcedure</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">parameters</param>
/// <returns>SqlDataReader type of data collection</returns>
public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand();
MySqlConnection conn = new MySqlConnection(connectionString); // we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
} /// <summary>
/// use the ExectueScalar to read a single result
/// </summary>
/// <param name="connectionString">connectionstring</param>
/// <param name="cmdType">command type, such as using stored procedures: CommandType.StoredProcedure</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">parameters</param>
/// <returns>a value in object type</returns>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand(); using (MySqlConnection connection = new MySqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
} /// <summary>
/// Call method of dataset to read data
/// </summary>
/// <param name="connectionString">connectionstring</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">parameters</param>
/// <returns>DataSet</returns>
public static DataSet GetDataSet(string connectionString, string cmdText, params MySqlParameter[] commandParameters)
{
DataSet retSet = new DataSet();
using (MySqlDataAdapter msda = new MySqlDataAdapter(cmdText, connectionString))
{
msda.Fill(retSet);
}
return retSet;
} /// <summary>
/// Call method of datatable to read data
/// </summary>
/// <param name="connectionString">connectionstring</param>
/// <param name="cmdText">stored procedure name or T-SQL statement</param>
/// <param name="commandParameters">parameters</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTable(string connectionString, string cmdText, params MySqlParameter[] commandParameters)
{
DataSet retSet = new DataSet();
using (MySqlDataAdapter msda = new MySqlDataAdapter(cmdText, connectionString))
{
msda.Fill(retSet);
}
return retSet.Tables[0];
} /// <summary>
/// cache the parameters in the HashTable
/// </summary>
/// <param name="cacheKey">hashtable key name</param>
/// <param name="commandParameters">the parameters that need to cached</param>
public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters)
{
parmCache[cacheKey] = commandParameters;
} /// <summary>
/// get parameters in hashtable by cacheKey
/// </summary>
/// <param name="cacheKey">hashtable key name</param>
/// <returns>the parameters</returns>
public static MySqlParameter[] GetCachedParameters(string cacheKey)
{
MySqlParameter[] cachedParms = (MySqlParameter[])parmCache[cacheKey]; if (cachedParms == null)
return null; MySqlParameter[] clonedParms = new MySqlParameter[cachedParms.Length]; for (int i = 0, j = cachedParms.Length; i < j; i++)
clonedParms[i] = (MySqlParameter)((ICloneable)cachedParms[i]).Clone(); return clonedParms;
} /// <summary>
///Prepare parameters for the implementation of the command
/// </summary>
/// <param name="cmd">mySqlCommand command</param>
/// <param name="conn">database connection that is existing</param>
/// <param name="trans">database transaction processing </param>
/// <param name="cmdType">SqlCommand command type (stored procedures, T-SQL statement, and so on.) </param>
/// <param name="cmdText">Command text, T-SQL statements such as Select * from Products</param>
/// <param name="cmdParms">return the command that has parameters</param>
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open(); cmd.Connection = conn;
cmd.CommandText = cmdText; if (trans != null)
cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null)
foreach (MySqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
#region parameters
/// <summary>
/// Set parameters
/// </summary>
/// <param name="ParamName">parameter name</param>
/// <param name="DbType">data type</param>
/// <param name="Size">type size</param>
/// <param name="Direction">input or output</param>
/// <param name="Value">set the value</param>
/// <returns>Return parameters that has been assigned</returns>
public static MySqlParameter CreateParam(string ParamName, MySqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
MySqlParameter param; if (Size > 0)
{
param = new MySqlParameter(ParamName, DbType, Size);
}
else
{ param = new MySqlParameter(ParamName, DbType);
} param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
} return param;
} /// <summary>
/// set Input parameters
/// </summary>
/// <param name="ParamName">parameter names, such as:@ id </param>
/// <param name="DbType">parameter types, such as: MySqlDbType.Int</param>
/// <param name="Size">size parameters, such as: the length of character type for the 100</param>
/// <param name="Value">parameter value to be assigned</param>
/// <returns>Parameters</returns>
public static MySqlParameter CreateInParam(string ParamName, MySqlDbType DbType, int Size, object Value)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
} /// <summary>
/// Output parameters
/// </summary>
/// <param name="ParamName">parameter names, such as:@ id</param>
/// <param name="DbType">parameter types, such as: MySqlDbType.Int</param>
/// <param name="Size">size parameters, such as: the length of character type for the 100</param>
/// <param name="Value">parameter value to be assigned</param>
/// <returns>Parameters</returns>
public static MySqlParameter CreateOutParam(string ParamName, MySqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
} /// <summary>
/// Set return parameter value
/// </summary>
/// <param name="ParamName">parameter names, such as:@ id</param>
/// <param name="DbType">parameter types, such as: MySqlDbType.Int</param>
/// <param name="Size">size parameters, such as: the length of character type for the 100</param>
/// <param name="Value">parameter value to be assigned<</param>
/// <returns>Parameters</returns>
public static MySqlParameter CreateReturnParam(string ParamName, MySqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
} /// <summary>
/// Generate paging storedProcedure parameters
/// </summary>
/// <param name="CurrentIndex">CurrentPageIndex</param>
/// <param name="PageSize">pageSize</param>
/// <param name="WhereSql">query Condition</param>
/// <param name="TableName">tableName</param>
/// <param name="Columns">columns to query</param>
/// <param name="Sort">sort</param>
/// <returns>MySqlParameter collection</returns>
public static MySqlParameter[] GetPageParm(int CurrentIndex, int PageSize, string WhereSql, string TableName, string Columns, Hashtable Sort)
{
MySqlParameter[] parm = {
MYSQLHelper.CreateInParam("@CurrentIndex", MySqlDbType.Int32, 4, CurrentIndex ),
MYSQLHelper.CreateInParam("@PageSize", MySqlDbType.Int32, 4, PageSize ),
MYSQLHelper.CreateInParam("@WhereSql", MySqlDbType.VarChar, 2500, WhereSql ),
MYSQLHelper.CreateInParam("@TableName", MySqlDbType.VarChar, 20, TableName ),
MYSQLHelper.CreateInParam("@Column", MySqlDbType.VarChar, 2500, Columns ),
MYSQLHelper.CreateInParam("@Sort", MySqlDbType.VarChar, 50, GetSort(Sort) ),
MYSQLHelper.CreateOutParam("@RecordCount", MySqlDbType.Int32, 4 )
};
return parm;
}
/// <summary>
/// Statistics data that in table
/// </summary>
/// <param name="TableName">table name</param>
/// <param name="Columns">Statistics column</param>
/// <param name="WhereSql">conditions</param>
/// <returns>Set of parameters</returns>
public static MySqlParameter[] GetCountParm(string TableName, string Columns, string WhereSql)
{
MySqlParameter[] parm = {
MYSQLHelper.CreateInParam("@TableName", MySqlDbType.VarChar, 20, TableName ),
MYSQLHelper.CreateInParam("@CountColumn", MySqlDbType.VarChar, 20, Columns ),
MYSQLHelper.CreateInParam("@WhereSql", MySqlDbType.VarChar, 250, WhereSql ),
MYSQLHelper.CreateOutParam("@RecordCount", MySqlDbType.Int32, 4 )
};
return parm;
}
/// <summary>
/// Get the sql that is Sorted
/// </summary>
/// <param name="sort"> sort column and values</param>
/// <returns>SQL sort string</returns>
private static string GetSort(Hashtable sort)
{
string str = "";
int i = 0;
if (sort != null && sort.Count > 0)
{
foreach (DictionaryEntry de in sort)
{
i++;
str += de.Key + " " + de.Value;
if (i != sort.Count)
{
str += ",";
}
}
}
return str;
} /// <summary>
/// execute a trascation include one or more sql sentence(author:donne yin)
/// </summary>
/// <param name="connectionString"></param>
/// <param name="cmdType"></param>
/// <param name="cmdTexts"></param>
/// <param name="commandParameters"></param>
/// <returns>execute trascation result(success: true | fail: false)</returns>
public static bool ExecuteTransaction(string connectionString, CommandType cmdType, string[] cmdTexts, params MySqlParameter[][] commandParameters)
{
MySqlConnection myConnection = new MySqlConnection(connectionString); //get the connection object
myConnection.Open(); //open the connection
MySqlTransaction myTrans = myConnection.BeginTransaction(); //begin a trascation
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = myConnection;
cmd.Transaction = myTrans; try
{
for (int i = 0; i < cmdTexts.Length; i++)
{
PrepareCommand(cmd, myConnection, null, cmdType, cmdTexts[i], commandParameters[i]);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
myTrans.Commit();
}
catch
{
myTrans.Rollback();
return false;
}
finally
{
myConnection.Close();
}
return true;
}
#endregion
}
}

用于Mysql操作的MySqlHelper类的更多相关文章

  1. ecshop的Mysql操作类

    摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MY ...

  2. 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

    先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填... ================================= ...

  3. Angular4+NodeJs+MySQL 入门-02 MySql操作类

    NodeJs操作MySQL类 此类封装了几个常用的方法:插入,更新,删除,查询,开启事务,事务提交,事务回滚等操作.有一这个类,操作MYSQL就方便多了. 批处理,存储过程等方法还没有添加,因为觉得目 ...

  4. C#操作SqlServer MySql Oracle通用帮助类

    C#操作SqlServer MySql Oracle通用帮助类 [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系 ...

  5. 用于JDBC操作数据库的公共类

    /* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...

  6. PHP:自己写的mysql操作类

    a{ font-weight: bold; display: block; text-align: center; color: #5887bf; font-size: 22px; } .conten ...

  7. php--->单例模式封装mysql操作类

    php 单例模式封装mysql操作类 单例模式的必要条件(三私一公) 私有的成员属性--防止类外引入这个存放对象的属性 私有的构造方法--为了防止在类外使用new关键字实例化对象 私有的克隆方法--为 ...

  8. PHP封装的一个单例模式Mysql操作类

    掌握满足单例模式的必要条件----三私一公. ①私有的构造方法-为了防止在类外使用new关键字实例化对象. ②私有的成员属性-为了防止在类外引入这个存放对象的属性. ③私有的克隆方法-为了防止在类外通 ...

  9. 十二天 mysql操作

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...

随机推荐

  1. 自上而下,逐步揭开PHP解析大整数的面纱

    遇到的问题 最近遇到一个PHP大整数的问题,问题代码是这样的 $shopId = 17978812896666957068; var_dump($shopId); 上面的代码输出,会把$shopId转 ...

  2. 这是一款借助chrome 插件的微信机器人

    1.chrome kit微信机器人简介 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开too ...

  3. 【1414软工助教】团队作业5——测试与发布(Alpha版本) 得分榜

    题目 团队作业5--测试与发布(Alpha版本) 作业提交情况情况 所有团队按时提交. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1 ...

  4. 201521123077 《Java程序设计》第7周学习总结

    1. 本周学习总结 (图片来自网络) 可以看到,java的容器很多,这里讲一下这周经常用到的 ArrayList:用数组形式保存数据的容器,随机访问比较快,但是插入删除操作都比较耗时,会自动调整内部数 ...

  5. JS中的DOM对象及JS对document对像的操作

    DOM对象 windows:属性:opener(打开者) 方法:open().close(),setTimeout().setInterval()... location:属性:href 方法:rel ...

  6. java:java构造器和java方法的区别

    构造函数(构造器)是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在JA ...

  7. 用Beautifulsoup 来爬取贴吧图片

    import urllib.request import bs4 import re import os url="https://tieba.baidu.com/p/1988291937? ...

  8. JPA关系映射之one-to-one

    一对一关联有两种实现方式:一种是共享的主键关联,另一种是一对一的外键关联 1.共享的主键关联:让两个对象具有共同的主键值,以表明他们之间的一一对应关系. Person.java类 public cla ...

  9. IIC-BUS INTERFACE

    I2C总线是由Philips公司开发的一种简单.双向二线制同步串行总线.它只需要两根线即可在连接于总线上的器件之间传送信息. To control multi-master IIC-bus opera ...

  10. oracle查询用户权限及角色(摘)

    1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限( ...