C# 基于MySQL的数据层基类(MySQLHelper)
以下是具体代码:
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)相关推荐
- mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)
using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...
- BIM工程信息管理系统-EF实体框架数据操作基类
EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...
- 【Flask项目2】python对象分页数据序列化基类(5)
comment-utils-serializer.py文件 class BasePaginateSerializer(object):"""分页数据序列化基类" ...
- mysql 热切换_热璞HotDB学习篇—如何基于MySQL进行数据高可用
数据高可用之所以是老生常谈的话题,是因它对企业数据安全起到了至关重要的保障作用,数据高可用核心功能在于如何保证在发生故障时数据不丢失.本文作者热璞数据库HotDB首席架构师,精通数据库原理和MySQL ...
- Flutter 基于AppBar自定义导航栏基类
Flutter 基于AppBar自定义导航栏基类 效果图 AppBar 详解 代码实现 效果图 AppBar 详解 AppBar({Key key,this.leading, //widget类型,即 ...
- EF实体框架数据操作基类(转)
//---------------------------------------------------------------- // Copyright (C) 2013 河南禄恒软件科技有限公 ...
- 基于MySQL的数据在线管理系统
工具软件:Apache2.2,PHP5.3.10,MySQL8.0.27, 1. 配置软件环境: 2. 设置localhost本地映射位置: 3. 使用Navicat for MySQL编辑数据库项目 ...
- MVC中业务层是否应该有个基类?它有什么作用?
项目架构N层结构中,业务层无疑是比较灵活多变,与数据库层紧密联系,又同时约束WEB层的中间层,它是否应该有个基类,而如果有,那它的作用又是什么呢? 这就是今天要说的. 首先,我认为每个层都应该有个基类 ...
- MVC+LINQToSQL的Repository模式之(二)数据基类
namespace Data.TEST { /// <summary> /// 数据操作基类 /// </summary> public abs ...
- 餐饮汇总表mysql_基于某餐饮数据的mysql+powerBI综合案列
一.关于本次案列的概述 相关资料与结果: 本次案列的数据是来自某餐饮数据的日销售情况,基于已经提供的数据,需要在excel中做一个各个店面的分析仪,其KPI 指标相关如下: 该问题的难点还是在于表之间 ...
最新文章
- java做个简单的登录界面_java一个简单的登录界面制作
- 基于tcp协议的socket
- 【转】VSS的配置和使用
- linux 分区表dd,dd复制分区后目标分区的大小变成原分区了
- FFmpeg windows下载安装
- 软件工程网络15个人阅读作业1(201521123029 郑佳明)
- 好消息 | 顶级 AI 华人学者拟加入清华大学自动化系!
- Centos6.4安装jdk
- 移动时代软件测试团队该往哪里去?
- 阿里云oss Referer设置
- CMMI5级认证含金量高吗?
- 用人机对话系统设计逻辑探究人工智能产品经理
- Flutter入门进阶之旅(六)Layout Widget
- Vue问题之 项目目录结构介绍
- 第四批入围企业公示——年度TOP100智能网联供应商评选
- 近期爬虫学习体会以及爬豆瓣Top250源码实战
- DSP28335入门教程:ADC的使用
- jquery ZeroClipboard实现黏贴板功能,兼容所有浏览器
- HTML5 视频直播那些事儿+吕小鸣博客
- LaTeX的学习--字体
热门文章
- Android 中文 API——android.widget合集(上)(20篇)
- XP自动搜索功能修复
- asyncio 文件io高并发_请问这个 asyncio 异步访问页面怎么写可以更加快?
- 细说OSI七层协议模型及OSI参考模型中的数据封装过程?
- LED的本质和发光原理是什么,彩色的LED灯是怎么做出来的
- 10年专注单片机从业者告诉你如何自制一个属于自己的单片机开发板
- 集合和数组的区别_java集合最全说明
- MyBatis集合Spring(一)之在MyBatis中配置Spring的应用
- Struts2之Action的基本配置
- [渝粤教育] 西南科技大学 操作系统 在线考试复习资料