SqlServerHelper类,整理微软提供的helper
发布时间:2020-12-12 14:51:05 所属栏目:MsSql教程 来源:网络整理
导读:微软在petShop中使用了SqlServerHelper类,通过调用静态方法实现对数据库的操作,使用起来非常简单顺手,下面整理了该类的代码,并加以说明: //------------------------------------------------------------// All Rights Reserved,Copyright (C) 2010,lu
微软在petShop中使用了SqlServerHelper类,通过调用静态方法实现对数据库的操作,使用起来非常简单顺手,下面整理了该类的代码,并加以说明:
//------------------------------------------------------------ // All Rights Reserved,Copyright (C) 2010,lusens //------------------------------------------------------------ using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace Utility.Data { /// <summary> /// SQLServer数据库操作类 /// 本类主要包括SQLServer数据库的基本操作 /// /// 修改纪录 /// /// 2010.10.22 版本:1.1 lusens 新增了用户传入sql语句列表的事务操作 /// 2010.09.05 版本:1.0 lusens 创建。 /// /// 版本:1.1 /// /// <author> /// <name>lusens</name> /// <date>2010.09.05</date> /// <EMail>lusens@foxmail.com</EMail> /// </author> /// </summary> public abstract class SQLServerHepler { //public static readonly string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString; #region public static string GetConnectionStringByConfig() /// <summary> /// 读取配置文件的ConnectionString字符串 /// </summary> /// <returns>Connection连接字符串</returns> public static string GetConnectionStringByConfig() { return System.Configuration.ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString; } #endregion #region 执行SQL,返回被操作的行数,public static int ExecuteNonQuery(string connectionString,CommandType cmdType,string cmdText,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL语句,返回被操作的行数 /// 使用using语句进行conn对象的释放 /// </summary> /// <param name="connectionString">连接字符</param> /// <param name="cmdType">Command类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns>返回被操作行数</returns> public static int ExecuteNonQuery(string connectionString,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd,conn,null,cmdType,cmdText,commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } #endregion #region 执行SQL,返回被操作的行数,public static int ExecuteNonQuery(SqlConnection connection,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL语句,返回被操作的行数 /// 这里默认使用外面传入的conn对象,使用完成后不会对conn对象进行释放,需要自己在外面进行数据库连接释放 /// </summary> /// <param name="connection">数据库连接对象</param> /// <param name="cmdType">command命令类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static int ExecuteNonQuery(SqlConnection connection,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd,connection,commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } #endregion #region 执行SQL语句,返回被操作的行数,public static int ExecuteNonQuery(SqlTransaction trans,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL语句,返回被操作的行数 /// 这里默认使用外面传入的conn对象,使用完成后不会对conn对象进行释放,需要自己在外面进行数据库连接释放 /// </summary> /// <param name="trans">SQL事务</param> /// <param name="cmdType">command类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static int ExecuteNonQuery(SqlTransaction trans,trans.Connection,trans,commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } #endregion #region 执行SQL,返回SqlDataReader,public static SqlDataReader ExecuteReader(string connectionString,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL,返回SqlDataReader /// 返回一个连接,所以不能进行conn释放,在外界代码中使用完DataReader后,注意需要释放reader对象 /// 当返回连接对象报错时,这里进行数据库连接的关闭,保证数据库连接使用完成后保持关闭 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="cmdType">command命令类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static SqlDataReader ExecuteReader(string connectionString,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try { PrepareCommand(cmd,commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch (Exception e) { conn.Close(); throw e; } } #endregion #region 执行SQL,返回SqlDataReader,public static SqlDataReader ExecuteReader(SqlConnection connection,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL,返回SqlDataReader /// 返回一个连接,所以不能进行conn释放,在外界代码中使用完DataReader后,注意需要释放reader对象 /// 当返回连接对象报错时,这里进行数据库连接的关闭,保证数据库连接使用完成后保持关闭 /// </summary> /// <param name="connection">SqlConnection数据库连接对象</param> /// <param name="cmdType">command命令类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static SqlDataReader ExecuteReader(SqlConnection connection,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); try { PrepareCommand(cmd,commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch (Exception e) { connection.Close(); throw e; } } #endregion #region 执行SQL,返回DataTable, public static DataTable ExecuteDataTable(string connectionString,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL,返回DataTable /// 使用using语句进行conn对象的释放 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="cmdType">command命令类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static DataTable ExecuteDataTable(string connectionString,params SqlParameter[] commandParameters) { DataTable dt = new DataTable(); SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd,commandParameters); using (SqlDataAdapter sda = new SqlDataAdapter()) { sda.SelectCommand = cmd; sda.Fill(dt); } } return dt; } #endregion #region 执行SQL,返回DataTable,public static DataTable ExecuteDataTable(SqlConnection connection,params SqlParameter[] commandParameters) /// <summary> /// 执行SQL,返回DataTable /// 这里默认使用外面传入的conn对象,使用完成后不会对conn对象进行释放,需要自己在外面进行数据库连接释放 /// </summary> /// <param name="connection">数据库连接对象</param> /// <param name="cmdType">Command命令类型,SQL语句或存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static DataTable ExecuteDataTable(SqlConnection connection,params SqlParameter[] commandParameters) { DataTable dt = new DataTable(); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd,commandParameters); using (SqlDataAdapter sda = new SqlDataAdapter()) { sda.SelectCommand = cmd; sda.Fill(dt); } return dt; } #endregion #region 返回第一行第一列,public static object ExecuteScalar(string connectionString,params SqlParameter[] commandParameters) /// <summary> /// 返回第一行第一列 /// 使用using语句进行conn对象的释放 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="cmdType">Command命令类型,SQL语句还是存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static object ExecuteScalar(string connectionString,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString)) { PrepareCommand(cmd,commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } #endregion #region 返回第一行第一列,public static object ExecuteScalar(SqlConnection connection,params SqlParameter[] commandParameters) /// <summary> /// 返回第一行第一列 /// 使用外面传入的conn对象,使用完成后不会对conn对象进行释放,需要自己在外面进行数据库连接释放 /// </summary> /// <param name="connection">SqlConnection数据库连接对象</param> /// <param name="cmdType">Command命令类型,SQL语句还是存储过程</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static object ExecuteScalar(SqlConnection connection,params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd,commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } #endregion #region 以事务执行sql语句列表,public static bool ExecuteTransaction(SqlConnection conn,List<string> cmdTextes,List<SqlParameter[]> commandParameterses) /// <summary> /// 以事务执行sql语句列表,返回事务执行是否成功 /// </summary> /// <param name="conn">数据库连接对象</param> /// <param name="cmdTextes">sql语句列表</param> /// <param name="commandParameterses">sql语句列表对应的参数列表,参数列表必须与sql语句列表匹配</param> /// <returns>事务执行是否成功</returns> public static bool ExecuteTransaction(SqlConnection conn,List<SqlParameter[]> commandParameterses) { bool flag = false; if (cmdTextes.Count == commandParameterses.Count) { SqlTransaction sqlTran = conn.BeginTransaction(); try { for (int i = 0; i < cmdTextes.Count; i++) { ExecuteNonQuery(sqlTran,CommandType.Text,cmdTextes[i],commandParameterses[i]); } sqlTran.Commit(); flag = true; } catch (Exception e) { sqlTran.Rollback(); } } return flag; } #endregion #region 以事务执行sql语句列表,返回事务执行是否成功,public static bool ExecuteTransaction(string connectionString,List<SqlParameter[]> commandParameterses) /// <summary> /// 以事务执行sql语句列表,返回事务执行是否成功 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="cmdTextes">sql语句列表</param> /// <param name="commandParameterses">sql语句列表对应的参数列表,参数列表必须与sql语句列表匹配</param> /// <returns></returns> public static bool ExecuteTransaction(string connectionString,List<SqlParameter[]> commandParameterses) { bool flag = false; if (cmdTextes.Count == commandParameterses.Count) { using (SqlConnection conn = new SqlConnection(connectionString)) { SqlTransaction sqlTran = conn.BeginTransaction(); try { for (int i = 0; i < cmdTextes.Count; i++) { ExecuteNonQuery(sqlTran,commandParameterses[i]); } sqlTran.Commit(); flag = true; } catch (Exception e) { sqlTran.Rollback(); } } } return flag; } #endregion #region 构造SQLCommand,private static void PrepareCommand(SqlCommand cmd,SqlConnection conn,SqlTransaction trans,SqlParameter[] cmdParms) /// <summary> /// 构造SQLCommand /// </summary> /// <param name="cmd">Command对象</param> /// <param name="conn">SqlConnection数据库连接对象</param> /// <param name="trans">SQL事务</param> /// <param name="cmdType">Command命令类型</param> /// <param name="cmdText">SQL语句或存储过程名称</param> /// <param name="cmdParms">参数数组</param> private static void PrepareCommand(SqlCommand cmd,SqlParameter[] 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 (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } } #endregion } } 注意:该类并没有完全封装所有数据对象的使用 ,所以在外面使用类时,也会自行使用SqlConnection、SqlCommand等对象; 可以在 http://download.csdn.net/detail/luxin10/3830325 下载,无需积分 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读