您目前尚未登陆,请选择【登陆】或【注册
首页->功能源码->SqlHelper源码及使用实例>>App-Code/SqlHelper.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SqlHelper源码及使用实例
当前文件:文件类型 SqlHelper/App_Code/SqlHelper.cs打开代码结构图
普通视图
		            
1using System; 2using System.Data; 3using System.Configuration; 4using System.Web; 5using System.Web.Security; 6using System.Collections; 7using System.Data.SqlClient; 8 9//该源码下载自www.51aspx.com(51aspx.com) 10/// <summary> 11/// 数据库的通用访问代码 12/// 此类为抽象类,不允许实例化,在应用时直接调用即可 13/// </summary> 14public abstract class SqlHelper 15{ 16 //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 17 public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString; 18 19 // 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。 20 private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); 21 22 /// <summary> 23 ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 24 /// 使用参数数组形式提供参数列表 25 /// </summary> 26 /// <remarks> 27 /// 使用示例: 28 /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 29 /// </remarks> 30 /// <param name="connectionString">一个有效的数据库连接字符串</param> 31 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 32 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 33 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 34 /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> 35 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 36 { 37 38 SqlCommand cmd = new SqlCommand(); 39 40 using (SqlConnection conn = new SqlConnection(connectionString)) 41 { 42 //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中 43 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 44 int val = cmd.ExecuteNonQuery(); 45 46 //清空SqlCommand中的参数列表 47 cmd.Parameters.Clear(); 48 return val; 49 } 50 } 51 52 /// <summary> 53 ///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接 54 /// 使用参数数组提供参数 55 /// </summary> 56 /// <remarks> 57 /// 使用示例: 58 /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 59 /// </remarks> 60 /// <param name="conn">一个现有的数据库连接</param> 61 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 62 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 63 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 64 /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> 65 public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 66 { 67 68 SqlCommand cmd = new SqlCommand(); 69 70 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); 71 int val = cmd.ExecuteNonQuery(); 72 cmd.Parameters.Clear(); 73 return val; 74 } 75 76 /// <summary> 77 /// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理 78 /// 使用参数数组提供参数 79 /// </summary> 80 /// <remarks> 81 /// 使用示例: 82 /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 83 /// </remarks> 84 /// <param name="trans">一个存在的 sql 事物处理</param> 85 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 86 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 87 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 88 /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> 89 public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 90 { 91 SqlCommand cmd = new SqlCommand(); 92 PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); 93 int val = cmd.ExecuteNonQuery(); 94 cmd.Parameters.Clear(); 95 return val; 96 } 97 98 /// <summary> 99 /// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。 100 /// 使用参数数组提供参数 101 /// </summary> 102 /// <remarks> 103 /// 使用示例: 104 /// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 105 /// </remarks> 106 /// <param name="connectionString">一个有效的数据库连接字符串</param> 107 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 108 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 109 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 110 /// <returns>返回一个包含结果的SqlDataReader</returns> 111 public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 112 { 113 SqlCommand cmd = new SqlCommand(); 114 SqlConnection conn = new SqlConnection(connectionString); 115 116 // 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在, 117 //CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。 118 //关闭数据库连接,并通过throw再次引发捕捉到的异常。 119 try 120 { 121 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 122 SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 123 cmd.Parameters.Clear(); 124 return rdr; 125 } 126 catch 127 { 128 conn.Close(); 129 throw; 130 } 131 } 132 133 /// <summary> 134 /// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。 135 /// 使用参数数组提供参数 136 /// </summary> 137 /// <remarks> 138 /// 使用示例: 139 /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 140 /// </remarks> 141 /// <param name="connectionString">一个有效的数据库连接字符串</param> 142 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 143 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 144 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 145 /// <returns>返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型</returns> 146 public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 147 { 148 SqlCommand cmd = new SqlCommand(); 149 150 using (SqlConnection connection = new SqlConnection(connectionString)) 151 { 152 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); 153 object val = cmd.ExecuteScalar(); 154 cmd.Parameters.Clear(); 155 return val; 156 } 157 } 158 159 /// <summary> 160 /// 执行一条返回第一条记录第一列的SqlCommand命令,通过已经存在的数据库连接。 161 /// 使用参数数组提供参数 162 /// </summary> 163 /// <remarks> 164 /// 使用示例: 165 /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); 166 /// </remarks> 167 /// <param name="conn">一个已经存在的数据库连接</param> 168 /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 169 /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> 170 /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> 171 /// <returns>返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型</returns> 172 public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 173 { 174 175 SqlCommand cmd = new SqlCommand(); 176 177 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); 178 object val = cmd.ExecuteScalar(); 179 cmd.Parameters.Clear(); 180 return val; 181 } 182 183 /// <summary> 184 /// 缓存参数数组 185 /// </summary> 186 /// <param name="cacheKey">参数缓存的键值</param> 187 /// <param name="cmdParms">被缓存的参数列表</param> 188 public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters) 189 { 190 parmCache[cacheKey] = commandParameters; 191 } 192 193 /// <summary> 194 /// 获取被缓存的参数 195 /// </summary> 196 /// <param name="cacheKey">用于查找参数的KEY值</param> 197 /// <returns>返回缓存的参数数组</returns> 198 public static SqlParameter[] GetCachedParameters(string cacheKey) 199 { 200 SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey]; 201 202 if (cachedParms == null) 203 return null; 204 205 //新建一个参数的克隆列表 206 SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length]; 207 208 //通过循环为克隆参数列表赋值 209 for (int i = 0, j = cachedParms.Length; i < j; i++) 210 //使用clone方法复制参数列表中的参数 211 clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone(); 212 213 return clonedParms; 214 } 215 216 /// <summary> 217 /// 为执行命令准备参数 218 /// </summary> 219 /// <param name="cmd">SqlCommand 命令</param> 220 /// <param name="conn">已经存在的数据库连接</param> 221 /// <param name="trans">数据库事物处理</param> 222 /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> 223 /// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param> 224 /// <param name="cmdParms">返回带参数的命令</param> 225 private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) 226 { 227 228 //判断数据库连接状态 229 if (conn.State != ConnectionState.Open) 230 conn.Open(); 231 232 cmd.Connection = conn; 233 cmd.CommandText = cmdText; 234 235 //判断是否需要事物处理 236 if (trans != null) 237 cmd.Transaction = trans; 238 239 cmd.CommandType = cmdType; 240 241 if (cmdParms != null) 242 { 243 foreach (SqlParameter parm in cmdParms) 244 cmd.Parameters.Add(parm); 245 } 246 } 247}
还没有找到您心仪的内容?请用.net源码大搜捕
代码片断 打包下载该项目完整源码:SqlHelper源码及使用实例
51Aspx.com 版权所有 CopyRight © 2000-2008. 京ICP备06046876号