注意驱动选择MySql提供的官方驱动Connector/Net。数据库连接字符串类似这样:<add name="DBConnectString" connectionString="Server=192.168.1.2;Database=dbname;Uid=root;Pwd=111;charset=utf8" providerName="MySql.Data.MySqlClient"/>

以下是具体代码:

using System;

using System.Data;

using MySql.Data;

using MySql.Data.MySqlClient;

namespace DBUtility

{

/// <summary>

/// 基于MySQL的数据层基类

/// </summary>

/// <remarks>

/// 参考于MS Petshop 4.0

/// </remarks>

public abstract class MySqlHelper

{

#region 数据库连接字符串

public static readonly string DBConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();

#endregion

#region PrepareCommand

/// <summary>

/// Command预处理

/// </summary>

/// <param name="conn">MySqlConnection对象</param>

/// <param name="trans">MySqlTransaction对象,可为null</param>

/// <param name="cmd">MySqlCommand对象</param>

/// <param name="cmdType">CommandType,存储过程或命令行</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组,可为null</param>

private static void PrepareCommand(MySqlConnection conn, MySqlTransaction trans, MySqlCommand cmd, 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);

}

}

#endregion

#region ExecuteNonQuery

/// <summary>

/// 执行命令

/// </summary>

/// <param name="connectionString">数据库连接字符串</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns>返回受引响的记录行数</returns>

public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

using (MySqlConnection conn = new MySqlConnection(connectionString))

{

PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

}

/// <summary>

/// 执行命令

/// </summary>

/// <param name="conn">Connection对象</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns>返回受引响的记录行数</returns>

public static int ExecuteNonQuery(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

/// <summary>

/// 执行事务

/// </summary>

/// <param name="trans">MySqlTransaction对象</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns>返回受引响的记录行数</returns>

public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(trans.Connection, trans, cmd, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

#endregion

#region ExecuteScalar

/// <summary>

/// 执行命令,返回第一行第一列的值

/// </summary>

/// <param name="connectionString">数据库连接字符串</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns>返回Object对象</returns>

public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

PrepareCommand(connection, null, cmd, cmdType, cmdText, cmdParms);

object val = cmd.ExecuteScalar();

cmd.Parameters.Clear();

return val;

}

}

/// <summary>

/// 执行命令,返回第一行第一列的值

/// </summary>

/// <param name="connectionString">数据库连接字符串</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns>返回Object对象</returns>

public static object ExecuteScalar(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);

object val = cmd.ExecuteScalar();

cmd.Parameters.Clear();

return val;

}

#endregion

#region ExecuteReader

/// <summary>

/// 执行命令或存储过程,返回MySqlDataReader对象

/// 注意MySqlDataReader对象使用完后必须Close以释放MySqlConnection资源

/// </summary>

/// <param name="connectionString">数据库连接字符串</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组</param>

/// <returns></returns>

public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

MySqlConnection conn = new MySqlConnection(connectionString);

try

{

PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);

MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

return dr;

}

catch

{

conn.Close();

throw;

}

}

#endregion

#region ExecuteDataSet

/// <summary>

/// 执行命令或存储过程,返回DataSet对象

/// </summary>

/// <param name="connectionString">数据库连接字符串</param>

/// <param name="cmdType">命令类型(存储过程或SQL语句)</param>

/// <param name="cmdText">SQL语句或存储过程名</param>

/// <param name="cmdParms">MySqlCommand参数数组(可为null值)</param>

/// <returns></returns>

public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)

{

MySqlCommand cmd = new MySqlCommand();

using (MySqlConnection conn = new MySqlConnection(connectionString))

{

PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);

MySqlDataAdapter da = new MySqlDataAdapter(cmd);

DataSet ds = new DataSet();

da.Fill(ds);

conn.Close();

cmd.Parameters.Clear();

return ds;

}

}

#endregion

}//end class

}

using System;
using System.Collections;
using System.Configuration;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;

namespace DBTranslater
{
    /// <summary>
    ///SQLHelper 的摘要说明
    /// </summary>
    public abstract class MySqlHelper
    {
        //数据库连接字符串
        public static string Conn = "Database='mydb';Data Source='localhost';User Id='root';Password='admin';charset='utf8'";

// 用于缓存参数的HASH表
        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

/// <summary>
        ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
        /// </summary>
        /// <param name="connectionString">一个有效的连接字符串</param>
        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="cmdText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>执行命令所影响的行数</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>
        /// 用现有的数据库连接执行一个sql命令(不返回数据集)

转载于:https://www.cnblogs.com/martin1009/archive/2011/11/13/2247082.html

C# 基于MySQL的数据层基类(MySQLHelper)相关推荐

  1. mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)

    using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...

  2. BIM工程信息管理系统-EF实体框架数据操作基类

    EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...

  3. 【Flask项目2】python对象分页数据序列化基类(5)

    comment-utils-serializer.py文件 class BasePaginateSerializer(object):"""分页数据序列化基类" ...

  4. mysql 热切换_热璞HotDB学习篇—如何基于MySQL进行数据高可用

    数据高可用之所以是老生常谈的话题,是因它对企业数据安全起到了至关重要的保障作用,数据高可用核心功能在于如何保证在发生故障时数据不丢失.本文作者热璞数据库HotDB首席架构师,精通数据库原理和MySQL ...

  5. Flutter 基于AppBar自定义导航栏基类

    Flutter 基于AppBar自定义导航栏基类 效果图 AppBar 详解 代码实现 效果图 AppBar 详解 AppBar({Key key,this.leading, //widget类型,即 ...

  6. EF实体框架数据操作基类(转)

    //---------------------------------------------------------------- // Copyright (C) 2013 河南禄恒软件科技有限公 ...

  7. 基于MySQL的数据在线管理系统

    工具软件:Apache2.2,PHP5.3.10,MySQL8.0.27, 1. 配置软件环境: 2. 设置localhost本地映射位置: 3. 使用Navicat for MySQL编辑数据库项目 ...

  8. MVC中业务层是否应该有个基类?它有什么作用?

    项目架构N层结构中,业务层无疑是比较灵活多变,与数据库层紧密联系,又同时约束WEB层的中间层,它是否应该有个基类,而如果有,那它的作用又是什么呢? 这就是今天要说的. 首先,我认为每个层都应该有个基类 ...

  9. MVC+LINQToSQL的Repository模式之(二)数据基类

    namespace Data.TEST {     /// <summary>     /// 数据操作基类     /// </summary>     public abs ...

  10. 餐饮汇总表mysql_基于某餐饮数据的mysql+powerBI综合案列

    一.关于本次案列的概述 相关资料与结果: 本次案列的数据是来自某餐饮数据的日销售情况,基于已经提供的数据,需要在excel中做一个各个店面的分析仪,其KPI 指标相关如下: 该问题的难点还是在于表之间 ...

最新文章

  1. java做个简单的登录界面_java一个简单的登录界面制作
  2. 基于tcp协议的socket
  3. 【转】VSS的配置和使用
  4. linux 分区表dd,dd复制分区后目标分区的大小变成原分区了
  5. FFmpeg windows下载安装
  6. 软件工程网络15个人阅读作业1(201521123029 郑佳明)
  7. 好消息 | 顶级 AI 华人学者拟加入清华大学自动化系!
  8. Centos6.4安装jdk
  9. 移动时代软件测试团队该往哪里去?
  10. 阿里云oss Referer设置
  11. CMMI5级认证含金量高吗?
  12. 用人机对话系统设计逻辑探究人工智能产品经理
  13. Flutter入门进阶之旅(六)Layout Widget
  14. Vue问题之 项目目录结构介绍
  15. 第四批入围企业公示——年度TOP100智能网联供应商评选
  16. 近期爬虫学习体会以及爬豆瓣Top250源码实战
  17. DSP28335入门教程:ADC的使用
  18. jquery ZeroClipboard实现黏贴板功能,兼容所有浏览器
  19. HTML5 视频直播那些事儿+吕小鸣博客
  20. LaTeX的学习--字体

热门文章

  1. Android 中文 API——android.widget合集(上)(20篇)
  2. XP自动搜索功能修复
  3. asyncio 文件io高并发_请问这个 asyncio 异步访问页面怎么写可以更加快?
  4. 细说OSI七层协议模型及OSI参考模型中的数据封装过程?
  5. LED的本质和发光原理是什么,彩色的LED灯是怎么做出来的
  6. 10年专注单片机从业者告诉你如何自制一个属于自己的单片机开发板
  7. 集合和数组的区别_java集合最全说明
  8. MyBatis集合Spring(一)之在MyBatis中配置Spring的应用
  9. Struts2之Action的基本配置
  10. [渝粤教育] 西南科技大学 操作系统 在线考试复习资料