Ado.NET SQLHelper(2)

测试发现前面发的那个功能太简单,不能调用getdate()等内部函数。 
完善后重载了insert和update两个功能,将函数作为字符串传入SQL语句构造,需要的可以试用一下
 
  1 using System;
  2 using System.Data;
  3 using System.Data.SqlClient;
  4 
  5 namespace RaywindStudio
  6 {
  7     namespace DAL
  8     {
  9         /// <summary>
 10         /// MSSQL数据库操作类
 11         /// </summary>
 12         public static class SqlHelper
 13         {
 14             /// <summary>
 15             /// 执行MSSQL插入表操作,默认列名:ColumnName=ParameterName.Replace("@","")
 16             /// </summary>
 17             /// <param name="TableName">表名称</param>
 18             /// <param name="parameters">SqlParameter</param>
 19             /// <param name="sqlconn">一个SQL连接</param>
 20             /// <returns>ExecuteNonQuery执行结果</returns>
 21             public static int InsertCMD(string TableName, SqlParameter[] parameters,
 22                 SqlConnection sqlconn)
 23             {
 24                 string sql = "Insert into " + TableName + "(";
 25                 for (int i = 0; i < parameters.Length; i++)
 26                     sql += parameters[i].ParameterName.Replace("@", "") + ",";
 27                 sql = sql.Substring(0, sql.Length - 1) + ") Values(";
 28                 for (int j = 0; j < parameters.Length; j++)
 29                     sql += parameters[j].ParameterName + ",";
 30                 sql = sql.Substring(0, sql.Length - 1) + ")";
 31                 try
 32                 {
 33                     SqlCommand cmd = new SqlCommand(sql, sqlconn);
 34                     cmd.Parameters.AddRange(parameters);
 35                     if (sqlconn.State != ConnectionState.Open)
 36                         sqlconn.Open();
 37                     return cmd.ExecuteNonQuery();
 38                 }
 39                 catch (Exception ex)
 40                 {
 41                     throw new Exception("InsertCMD:ExecuteNonQuery
" + ex.Message);
 42                 }
 43             }
 44 
 45 
 46             /// <summary>
 47             /// 执行MSSQL插入表操作,默认列名:ColumnName=ParameterName.Replace("@","")
 48             /// </summary>
 49             /// <param name="TableName">表名称</param>
 50             /// <param name="parameters">SqlParameter</param>
 51             /// <param name="ColumnValues">ColumnValue键值对:弥补SqlParameter无法调用getdate()、year()等内部函数的不足。
 52             /// 前后分别为Column和Value,添加在insert语句的column和value部分</param>
 53             /// <param name="sqlconn">一个SQL连接</param>
 54             /// <returns>ExecuteNonQuery执行结果</returns>
 55             public static int InsertCMD(string TableName, SqlParameter[] parameters,
 56                 string[,] ColumnValues, SqlConnection sqlconn)
 57             {
 58                 string sql = "Insert into " + TableName + "(";
 59                 for (int i = 0; i < parameters.Length; i++)
 60                     sql += parameters[i].ParameterName.Replace("@", "") + ",";
 61                 for (int ii = 0; ii < ColumnValues.GetLength(0); ii++)
 62                     sql += ColumnValues[ii, 0] + ",";
 63                 sql = sql.Substring(0, sql.Length - 1) + ") Values(";
 64                 for (int j = 0; j < parameters.Length; j++)
 65                     sql += parameters[j].ParameterName + ",";
 66                 for (int jj = 0; jj < ColumnValues.GetLength(0); jj++)
 67                     sql += ColumnValues[jj, 1] + ",";
 68                 sql = sql.Substring(0, sql.Length - 1) + ")";
 69                 try
 70                 {
 71                     SqlCommand cmd = new SqlCommand(sql, sqlconn);
 72                     cmd.Parameters.AddRange(parameters);
 73                     if (sqlconn.State != ConnectionState.Open)
 74                         sqlconn.Open();
 75                     return cmd.ExecuteNonQuery();
 76                 }
 77                 catch (Exception ex)
 78                 {
 79                     throw new Exception("InsertCMD:ExecuteNonQuery
" + ex.Message);
 80                 }
 81             }
 82 
 83             /// <summary>
 84             /// 执行MSSQL更新表操作,默认列名:ColumnName=ParameterName.Replace("@","")
 85             /// </summary>
 86             /// <param name="TableName">表名称</param>
 87             /// <param name="parameters">SqlParameter</param>
 88             /// <param name="sqlconn">一个SQL连接</param>
 89             /// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
 90             /// <returns>ExecuteNonQuery执行结果</returns>
 91             public static int UpdateCMD(string TableName, SqlParameter[] parameters,
 92                 SqlConnection sqlconn, string Conditions)
 93             {
 94                 string sql = "Update " + TableName + " Set ";
 95                 for (int i = 0; i < parameters.Length; i++)
 96                     sql += parameters[i].ParameterName.Replace("@", "")
 97                         + "=" + parameters[i].ParameterName + ",";
 98                 sql = sql.Substring(0, sql.Length - 1)
 99                    + " Where 1=1 " + (Conditions.Length > 0 ? " and " + Conditions : "");
100                 try
101                 {
102                     SqlCommand cmd = new SqlCommand(sql, sqlconn);
103                     cmd.Parameters.AddRange(parameters);
104                     if (sqlconn.State != ConnectionState.Open)
105                         sqlconn.Open();
106                     return cmd.ExecuteNonQuery();
107                 }
108                 catch (Exception ex)
109                 {
110                     throw new Exception("UpdateCMD:ExecuteNonQuery
" + ex.Message);
111                 }
112             }
113 
114             /// <summary>
115             /// 执行MSSQL更新表操作,默认列名:ColumnName=ParameterName.Replace("@","")
116             /// </summary>
117             /// <param name="TableName">表名称</param>
118             /// <param name="parameters">SqlParameter</param>
119             /// <param name="ColumnValues">ColumnValue键值对:弥补SqlParameter无法调用getdate()、year()等内部函数的不足。
120             /// 前后分别为Column和Value,添加在insert语句的column和value部分</param>
121             /// <param name="sqlconn">一个SQL连接</param>
122             /// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
123             /// <returns>ExecuteNonQuery执行结果</returns>
124             public static int UpdateCMD(string TableName, SqlParameter[] parameters,
125                 string[,] ColumnValues, SqlConnection sqlconn, string Conditions)
126             {
127                 string sql = "Update " + TableName + " Set ";
128                 for (int i = 0; i < parameters.Length; i++)
129                     sql += parameters[i].ParameterName.Replace("@", "")
130                         + "=" + parameters[i].ParameterName + ",";
131                 for (int j = 0; j < ColumnValues.GetLength(0); j++)
132                     sql += ColumnValues[j, 0] + "=" + ColumnValues[j, 1] + ",";
133                 sql = sql.Substring(0, sql.Length - 1)
134                    + " Where 1=1 " + (Conditions.Length > 0 ? " and " + Conditions : "");
135                 try
136                 {
137                     SqlCommand cmd = new SqlCommand(sql, sqlconn);
138                     cmd.Parameters.AddRange(parameters);
139                     if (sqlconn.State != ConnectionState.Open)
140                         sqlconn.Open();
141                     return cmd.ExecuteNonQuery();
142                 }
143                 catch (Exception ex)
144                 {
145                     throw new Exception("UpdateCMD:ExecuteNonQuery
" + ex.Message);
146                 }
147             }
148 
149             /// <summary>
150             /// 执行MSSQL删除表内数据操作
151             /// </summary>
152             /// <param name="TableName">表名称</param>
153             /// <param name="sqlconn">一个SQL连接</param>
154             /// <param name="Conditions">查询条件,不需要where,多条件用and分隔,没有条件传入空字串</param>
155             /// <returns>ExecuteNonQuery执行结果</returns>
156             public static int DeleteCMD(string TableName, SqlConnection sqlconn, string Conditions)
157             {
158                 string sql = "Delete From " + TableName + " Where 1=1 "
159                     + (Conditions.Length > 0 ? " and " + Conditions : "");
160                 try
161                 {
162                     SqlCommand cmd = new SqlCommand(sql, sqlconn);
163                     if (sqlconn.State != ConnectionState.Open)
164                         sqlconn.Open();
165                     return cmd.ExecuteNonQuery();
166                 }
167                 catch (Exception ex)
168                 {
169                     throw new Exception("DeleteCMD:ExecuteNonQuery
" + ex.Message);
170                 }
171             }
172 
173             /// <summary>
174             /// Select查表
175             /// </summary>
176             /// <param name="SqlString">一条完整、直接执行的select语句</param>
177             /// <param name="sqlconn">一个SQL连接</param>
178             /// <returns>DataTable</returns>
179             public static DataTable SelectTable(string SqlString, SqlConnection sqlconn)
180             {
181                 using (DataTable dt = new DataTable())
182                 {
183                     using (SqlDataAdapter da = new SqlDataAdapter(SqlString, sqlconn))
184                     {
185                         try
186                         {
187                             da.Fill(dt);
188                             return dt;
189                         }
190                         catch (Exception ex)
191                         {
192                             throw new Exception("SelectTable:
" + ex.Message);
193                         }
194                     }
195                 }
196             }
197 
198             /// <summary>
199             /// Select查值
200             /// </summary>
201             /// <param name="SqlString">一条完整、直接执行的select语句</param>
202             /// <param name="sqlconn">一个SQL连接</param>
203             /// <returns>ExecuteScalar</returns>
204             public static object SelectValue(string SqlString, SqlConnection sqlconn)
205             {
206                 try
207                 {
208                     SqlCommand cmd = new SqlCommand(SqlString, sqlconn);
209                     if (sqlconn.State != ConnectionState.Open)
210                         sqlconn.Open();
211                     return cmd.ExecuteScalar();
212                 }
213                 catch (Exception ex)
214                 {
215                     throw new Exception("SelectValue:
" + ex.Message);
216                 }
217             }
218 
219             /// <summary>
220             /// 执行存储过程,无返回值
221             /// </summary>
222             /// <param name="sqlString">存储过程执行语句,需包含Exec </param>
223             /// <param name="parameters">SqlParameter</param>
224             /// <param name="sqlconn">一个SQL连接</param>
225             /// <returns>ExecuteNonQuery执行结果</returns>
226             public static void ExecProcNonReturn(string sqlString, SqlParameter[] parameters, SqlConnection sqlconn)
227             {
228                 try
229                 {
230                     SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
231                     cmd.Parameters.AddRange(parameters);
232                     if (sqlconn.State != ConnectionState.Open)
233                         sqlconn.Open();
234                     cmd.ExecuteNonQuery();
235                 }
236                 catch (Exception ex)
237                 {
238                     throw new Exception("ExecProcNonReturn:ExecuteNonQuery
" + ex.Message);
239                 }
240             }
241 
242             /// <summary>
243             /// 执行存储过程,并直接返回执行的结果
244             /// </summary>
245             /// <param name="sqlString">存储过程执行语句,需包含Exec </param>
246             /// <param name="parameters">SqlParameter</param>
247             /// <param name="sqlconn">一个SQL连接</param>
248             /// <returns>ExecuteNonQuery执行结果</returns>
249             public static object ExecProc(string sqlString, SqlParameter[] parameters, SqlConnection sqlconn)
250             {
251                 try
252                 {
253                     SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
254                     cmd.Parameters.AddRange(parameters);
255                     if (sqlconn.State != ConnectionState.Open)
256                         sqlconn.Open();
257                     return cmd.ExecuteScalar();
258                 }
259                 catch (Exception ex)
260                 {
261                     throw new Exception("ExecProc:ExecuteScalar
" + ex.Message);
262                 }
263             }
264 
265             /// <summary>
266             /// 执行存储过程,带一个返回参数并返回此参数的执行结果
267             /// </summary>
268             /// <param name="sqlString">存储过程执行语句,需包含Exec </param>
269             /// <param name="parameters">SqlParameter</param>
270             /// <param name="parameter_out">SqlParameter.Direction = ParameterDirection.Output;</param>
271             /// <param name="sqlconn">一个SQL连接</param>
272             /// <returns>ExecuteNonQuery执行结果</returns>
273             public static object ExecProc(string sqlString, SqlParameter[] parameters,
274                 SqlParameter parameter_out, SqlConnection sqlconn)
275             {
276                 try
277                 {
278                     SqlCommand cmd = new SqlCommand(sqlString, sqlconn);
279                     cmd.Parameters.AddRange(parameters);
280                     cmd.Parameters.Add(parameter_out);
281                     if (sqlconn.State != ConnectionState.Open)
282                         sqlconn.Open();
283                     cmd.ExecuteNonQuery();
284                     return parameter_out.Value;
285                 }
286                 catch (Exception ex)
287                 {
288                     throw new Exception("ExecProc:ExecuteNonQuery
" + ex.Message);
289                 }
290             }
291         }
292     }
293 }
View Code
原文地址:https://www.cnblogs.com/leavind/p/5263009.html