Net连接mysql的公共Helper类MySqlHelper.cs带MySql.Data.dll下载

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySqlHelper.cs代码如下:

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
using System.Collections;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Configuration;
using System.IO;



public abstract class MySqlHelper
{
    //Get the database connectionstring, which are static variables and readonly, all project documents can be used directly, but can not modify it 
    //the database connectionString 
    //public static readonly string connectionStringManager = ConfigurationManager.ConnectionStrings["MYSQLConnectionString"].ConnectionString;
    public static string ConnectionStringManager
    {
        get { return connectionStringManager; }
    }



    //This connectionString for the local test
    public static readonly string connectionStringManager = System.Configuration.ConfigurationManager.AppSettings["MySQLConnString"];
    //ConfigurationManager.ConnectionStrings["MySQLConnString"].ConnectionString;

    //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;
        }
    }

    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>
    /// 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
}
复制代码

 

添加代码:

复制代码
// add
MySqlCommand sqlcom = new MySqlCommand();
sqlcom.CommandText = "INSERT INTO `tb_baobei` (`tb_Name`,`tb_Price`,`tb_Image`,`tb_Url`)" +
        " VALUES(@tb_Name,@tb_Price,@tb_Image,@tb_Url);";
MySqlParameter[] commandParameters = new MySqlParameter[]{
    new MySqlParameter("@tb_Name",bb.Name),
    new MySqlParameter("@tb_Price",bb.Price.Trim()),
    new MySqlParameter("@tb_Image",bb.Image),
    new MySqlParameter("@tb_Url",bb.Url)
};
MySqlHelper.ExecuteNonQuery(CommandType.Text, MySqlHelper.ConnectionStringManager, sqlcom.CommandText, commandParameters);
复制代码

 

查询代码:

复制代码
public string Login(string email,string password){

            MySqlCommand sqlcom = new MySqlCommand();
            sqlcom.CommandText = "select * from common_members where email =@email";
            MySqlParameter commandParameters = new MySqlParameter("@email", email);
            MySqlDataReader reader = MYSQLHelper.ExecuteReader(MYSQLHelper.ConnectionStringManager, CommandType.Text, sqlcom.CommandText, commandParameters);
            if (reader.Read() == true)
            {
                string pwd = reader["password"].ToString();
                if (pwd.Equals(password))
                {
                    return "1";
                }else
                {
                    return "0";
                }
                
            }
            else
            {
                return "-1";
            }
        }
复制代码

 

配置文件:

<add key="MySQLConnString" value="Server=localhost;Database=test1;Uid=test;Pwd=test;pooling=false;charset=utf8" />

 

MySqlHelper.cs和MySqlHelper.cs下载地址:http://pan.baidu.com/s/1jGBNq2E

 

 

 

本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/p/3539918.html,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
关系型数据库 MySQL 数据安全/隐私保护
关于Navicat连接MySQL 报 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
关于Navicat连接MySQL 报 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接器换成2.4.2之后,mysql作业一直报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
16 3
|
5天前
|
SQL 缓存 Java
实时计算 Flink版产品使用合集之flink-connector-mysql-cdc 和 flink-connector-sqlserver-cdc 这两个CDC连接器只能选择其中一个使用吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
27 0
|
6天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
91 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
6天前
|
关系型数据库 MySQL 数据库
navicat过期了,直接用idea连接mysql
navicat过期了,直接用idea连接mysql
13 0
|
6天前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
49 0
|
6天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
23 0
|
6天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
33 0
|
6天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
6 0
|
6天前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
123 5