MySQL助手_MySqlHelper.cs mysql数据库助手类

这是一个用于MySQL数据库操作的静态类MySqlHelper,包含 ExecuteNonQuery、ExecuteScalar、ExecuteReader 和 ExecuteDataSet 等方法,适用于.NET环境。类中提供了连接字符串配置、Command预处理等功能,方便执行SQL命令和存储过程。
摘要由CSDN通过智能技术生成

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Data;

usingSystem.Configuration;//如果是.net2.0环境,不仅仅需要在这里using,还要在项目中右键引用usingMySql.Data.MySqlClient;// 这里需要引用Connector Net 6.5.4 里面的 MySql.Data.dllnamespaceMySqlProcModelCreate

{

/// 基于MySQL的数据层基类,可以传入新的连接字符串,如果为null,则使用web.config里面指定的字符串///实际上,MySql.Data.dll里面也有一个自带的 MySqlHelper帮助类,我这里取一样的名字是覆盖了它自带的帮助类(自带的差的离谱··)/// public sealed classMySqlHelper{

#region默认的数据库连接字符串,读取web.config

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

#endregion

#regionPrepareCommand -> Command预处理,会判断conn的连接字符串是否已经指定,如果没有指定则使用默认web.config里面的字符串

/// Command预处理///

/// MySqlConnection对象

/// MySqlTransaction对象,可为null

/// MySqlCommand对象

/// CommandType,存储过程或命令行

/// SQL语句或存储过程名

/// MySqlCommand参数数组,可为nullprivate static voidPrepareCommand(MySqlConnectionconn, MySqlTransactiontrans, MySqlCommandcmd, CommandTypecmdType, stringcmdText, MySqlParameter[] cmdParms)

{

if(string.IsNullOrEmpty(conn.ConnectionString))

{

conn.ConnectionString = DBConnectionString;

}

//到底什么时候需要conn.open呢?哪些操作需要open呢?

//如果是通过cmd执行 ExecuteNonQuery,ExecuteScalar,ExecuteReader (也就是 类似于cmd.ExecuteNonQuery) 的时候,是需要open的

//如果是通过MySqlDataAdapter da = new MySqlDataAdapter(cmd); 来执行的时候,是不需要open的,那么这个时候conn就一直开着吗?会浪费?

//不会浪费,因为通过SqlDataAdapter的时候,我们都用using来封装了conn的 => using (MySqlConnection conn = new MySqlConnection(connectionString))

//那么,没有封装using的 ExecuteReader 呢?也是一直开着?放心,我们有用到 MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

//当 dr 关闭的时候,conn也会跟着关闭了(如果前台调用是用dr.Read()来获取值,则需要dr.Close来关闭dr,如果是gridview之类的控件绑定, 则不用dr.Close了)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(MySqlParameterparm incmdParms)

cmd.Parameters.Add(parm);

}

}

#endregion

#regionExecuteNonQuery->执行ExecuteNonQuery,用来增加,删除,修改

/// 执行ExecuteNonQuery///

/// 连接字符串,可为null,如果为null则使用web.config的值,不为null则使用传入的值

/// MySqlTransaction,事务,可为null

/// 命令类型(存储过程或SQL语句)

/// SQL语句或存储过程名

/// MySqlCommand参数数组

/// 返回受引响的记录行数public static intExecuteNonQuery(stringconnectionString, MySqlTransactiontrans, CommandTypecmdType, stringcmdText, paramsMySqlParameter[] cmdParms)

{

using(MySqlConnectionconn = newMySqlConnection(connectionString))

{

using(MySqlCommandcmd = newMySqlCommand())

{

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

intval = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

returnval;

}

}

}

#endregion

#regionExecuteScalar ->执行命令,返回第一行第一列的值

///

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

/// 连接字符串,可为null,如果为null则使用web.config的值,不为null则使用传入的值

/// 命令类型(存储过程或SQL语句)

/// SQL语句或存储过程名

/// MySqlCommand参数数组

/// 返回Object对象public static objectExecuteScalar(stringconnectionString, CommandTypecmdType, stringcmdText, paramsMySqlParameter[] cmdParms)

{

using(MySqlConnectionconn = newMySqlConnection(connectionString))

{

using(MySqlCommandcmd = newMySqlCommand())

{

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

objectval = cmd.ExecuteScalar();

cmd.Parameters.Clear();

returnval;

}

}

}

#endregion

#regionExecuteReader ->执行命令或存储过程,返回MySqlDataReader对象

///

///执行命令或存储过程,返回MySqlDataReader对象///注意MySqlDataReader对象,在前台使用完最好是先弄一个dr等于这里的返回值,///如果前台调用是用的dr.Read(),然后读取的值,则之后需要对dr进行dr.Close以关闭dr,进而释放MySqlConnection资源///如果是绑定了gridview之类的控件,则不用dr.Close(绑定控件帮我们已经close了)///

/// 连接字符串,可为null,如果为null则使用web.config的值,不为null则使用传入的值

/// 命令类型(存储过程或SQL语句)

/// SQL语句或存储过程名

/// MySqlCommand参数数组

/// public staticIDataReaderExecuteReader(stringconnectionString, CommandTypecmdType, stringcmdText, paramsMySqlParameter[] cmdParms)

{

MySqlCommandcmd = newMySqlCommand();

MySqlConnectionconn = newMySqlConnection(connectionString);

try{

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

MySqlDataReaderdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

returndr;

}

catch{

conn.Close();

throw;

}

}

#endregion

#regionExecuteDataSet->执行命令或存储过程,返回DataSet对象

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

///

/// 连接字符串,可为null,如果为null则使用web.config的值,不为null则使用传入的值

/// 命令类型(存储过程或SQL语句)

/// SQL语句或存储过程名

/// MySqlCommand参数数组(可为null值)

/// public staticDataSetExecuteDataSet(stringconnectionString, CommandTypecmdType, stringcmdText, paramsMySqlParameter[] cmdParms)

{

using(MySqlConnectionconn = newMySqlConnection(connectionString))

{

using(MySqlCommandcmd = newMySqlCommand())

{

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

//SqlDataAdapter,离线应用,不需要用conn.open(), 它把这部分功能给封装到自己内部了,不需要你来显式的去调用, 它直接将数据fill到dataset中.

//但是我们这里用 PrepareCommand 的时候不是还是帮我们open了么?不就浪费了么?没事,因为 conn被我们用 using 了,等下语句结束的时候,会释放的MySqlDataAdapterda = newMySqlDataAdapter(cmd);

DataSetds = newDataSet();

da.Fill(ds);

cmd.Parameters.Clear();

returnds;

}

}

}

#endregion

#regionExecuteDataTable->执行执行命令或存储过程,返回一个DataTable

/// 执行命令或存储过程,返回一个DataTable///

///

/// 连接字符串,可为null,如果为null则使用web.config的值,不为null则使用传入的值

/// CommandType.Text或者是CommandType.StoredProcedure

/// SQL语句或存储过程名

/// MySqlCommand参数数组(可为null值)

/// public staticDataTableExecuteDataTable(stringconnectionString, CommandTypecmdType, stringcmdText, paramsMySqlParameter[] cmdParms)

{

DataTabledt = newDataTable();

using(MySqlConnectionconn = newMySqlConnection(connectionString))

{

using(MySqlCommandcmd = newMySqlCommand())

{

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

MySqlDataAdapterda = newMySqlDataAdapter(cmd);

da.Fill(dt);

cmd.Parameters.Clear();

}

}

returndt;

}

#endregion}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值