C# SQLHelper

  1 class SQLHelper
  2     {
  3         #region 通用方法
  4         // 数据连接池
  5         private SqlConnection con;
  6         /// <summary>
  7         /// 返回数据库连接字符串
  8         /// </summary>
  9         /// <returns></returns>
 10         public static String GetSqlConnection()
 11         {
 12             String conn = ConfigurationManager.AppSettings["connectionString"].ToString();
 13             return conn;
 14         }
 15         #endregion
 16         #region 执行sql字符串
 17         /// <summary>
 18         /// 执行不带参数的SQL语句
 19         /// </summary>
 20         /// <param name="Sqlstr"></param>
 21         /// <returns></returns>
 22         public static int ExecuteSql(String Sqlstr)
 23         {
 24             String ConnStr = GetSqlConnection();
 25             using (SqlConnection conn = new SqlConnection(ConnStr))
 26             {
 27                 SqlCommand cmd = new SqlCommand();
 28                 cmd.Connection = conn;
 29                 cmd.CommandText = Sqlstr;
 30                 conn.Open();
 31                 cmd.ExecuteNonQuery();
 32                 conn.Close();
 33                 return 1;
 34             }
 35         }
 36         /// <summary>
 37         /// 执行带参数的SQL语句
 38         /// </summary>
 39         /// <param name="Sqlstr">SQL语句</param>
 40         /// <param name="param">参数对象数组</param>
 41         /// <returns></returns>
 42         public static int ExecuteSql(String Sqlstr, SqlParameter[] param)
 43         {
 44             String ConnStr = GetSqlConnection();
 45             using (SqlConnection conn = new SqlConnection(ConnStr))
 46             {
 47                 SqlCommand cmd = new SqlCommand();
 48                 cmd.Connection = conn;
 49                 cmd.CommandText = Sqlstr;
 50                 cmd.Parameters.AddRange(param);
 51                 conn.Open();
 52                 cmd.ExecuteNonQuery();
 53                 conn.Close();
 54                 return 1;
 55             }
 56         }
 57         /// <summary>
 58         /// 返回DataReader
 59         /// </summary>
 60         /// <param name="Sqlstr"></param>
 61         /// <returns></returns>
 62         public static SqlDataReader ExecuteReader(String Sqlstr)
 63         {
 64             String ConnStr = GetSqlConnection();
 65             SqlConnection conn = new SqlConnection(ConnStr);//返回DataReader时,是不可以用using()的
 66             try
 67             {
 68                 SqlCommand cmd = new SqlCommand();
 69                 cmd.Connection = conn;
 70                 cmd.CommandText = Sqlstr;
 71                 conn.Open();
 72                 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//关闭关联的Connection
 73             }
 74             catch //(Exception ex)
 75             {
 76                 return null;
 77             }
 78         }
 79         /// <summary>
 80         /// 执行SQL语句并返回数据表
 81         /// </summary>
 82         /// <param name="Sqlstr">SQL语句</param>
 83         /// <returns></returns>
 84         public static DataTable ExecuteDt(String Sqlstr)
 85         {
 86             String ConnStr = GetSqlConnection();
 87             using (SqlConnection conn = new SqlConnection(ConnStr))
 88             {
 89                 SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);
 90                 DataTable dt = new DataTable();
 91                 conn.Open();
 92                 da.Fill(dt);
 93                 conn.Close();
 94                 return dt;
 95             }
 96         }
 97         /// <summary>
 98         /// 执行SQL语句并返回DataSet
 99         /// </summary>
100         /// <param name="Sqlstr">SQL语句</param>
101         /// <returns></returns>
102         public static DataSet ExecuteDs(String Sqlstr)
103         {
104             String ConnStr = GetSqlConnection();
105             using (SqlConnection conn = new SqlConnection(ConnStr))
106             {
107                 SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);
108                 DataSet ds = new DataSet();
109                 conn.Open();
110                 da.Fill(ds);
111                 conn.Close();
112                 return ds;
113             }
114         }
115         #endregion
116         #region 操作存储过程
117         /// <summary>
118         /// 运行存储过程(已重载)
119         /// </summary>
120         /// <param name="procName">存储过程的名字</param>
121         /// <returns>存储过程的返回值</returns>
122         public int RunProc(string procName)
123         {
124             SqlCommand cmd = CreateCommand(procName, null);
125             cmd.ExecuteNonQuery();
126             this.Close();
127             return (int)cmd.Parameters["ReturnValue"].Value;
128         }
129         /// <summary>
130         /// 运行存储过程(已重载)
131         /// </summary>
132         /// <param name="procName">存储过程的名字</param>
133         /// <param name="prams">存储过程的输入参数列表</param>
134         /// <returns>存储过程的返回值</returns>
135         public int RunProc(string procName, SqlParameter[] prams)
136         {
137             SqlCommand cmd = CreateCommand(procName, prams);
138             cmd.ExecuteNonQuery();
139             this.Close();
140             return (int)cmd.Parameters[0].Value;
141         }
142         /// <summary>
143         /// 运行存储过程(已重载)
144         /// </summary>
145         /// <param name="procName">存储过程的名字</param>
146         /// <param name="dataReader">结果集</param>
147         public void RunProc(string procName, out SqlDataReader dataReader)
148         {
149             SqlCommand cmd = CreateCommand(procName, null);
150             dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
151         }
152         /// <summary>
153         /// 运行存储过程(已重载)
154         /// </summary>
155         /// <param name="procName">存储过程的名字</param>
156         /// <param name="prams">存储过程的输入参数列表</param>
157         /// <param name="dataReader">结果集</param>
158         public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
159         {
160             SqlCommand cmd = CreateCommand(procName, prams);
161             dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
162         }
163         /// <summary>
164         /// 创建Command对象用于访问存储过程
165         /// </summary>
166         /// <param name="procName">存储过程的名字</param>
167         /// <param name="prams">存储过程的输入参数列表</param>
168         /// <returns>Command对象</returns>
169         private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
170         {
171             // 确定连接是打开的
172             Open();
173             //command = new SqlCommand( sprocName, new SqlConnection( ConfigManager.DALConnectionString ) );
174             SqlCommand cmd = new SqlCommand(procName, con);
175             cmd.CommandType = CommandType.StoredProcedure;
176             // 添加存储过程的输入参数列表
177             if (prams != null)
178             {
179                 foreach (SqlParameter parameter in prams)
180                     cmd.Parameters.Add(parameter);
181             }
182             // 返回Command对象
183             return cmd;
184         }
185         /// <summary>
186         /// 创建输入参数
187         /// </summary>
188         /// <param name="ParamName">参数名</param>
189         /// <param name="DbType">参数类型</param>
190         /// <param name="Size">参数大小</param>
191         /// <param name="Value">参数值</param>
192         /// <returns>新参数对象</returns>
193         public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
194         {
195             return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
196         }
197         /// <summary>
198         /// 创建输出参数
199         /// </summary>
200         /// <param name="ParamName">参数名</param>
201         /// <param name="DbType">参数类型</param>
202         /// <param name="Size">参数大小</param>
203         /// <returns>新参数对象</returns>
204         public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
205         {
206             return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
207         }
208         /// <summary>
209         /// 创建存储过程参数
210         /// </summary>
211         /// <param name="ParamName">参数名</param>
212         /// <param name="DbType">参数类型</param>
213         /// <param name="Size">参数大小</param>
214         /// <param name="Direction">参数的方向(输入/输出)</param>
215         /// <param name="Value">参数值</param>
216         /// <returns>新参数对象</returns>
217         public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
218         {
219             SqlParameter param;
220             if (Size > 0)
221             {
222                 param = new SqlParameter(ParamName, DbType, Size);
223             }
224             else
225             {
226                 param = new SqlParameter(ParamName, DbType);
227             }
228             param.Direction = Direction;
229             if (!(Direction == ParameterDirection.Output && Value == null))
230             {
231                 param.Value = Value;
232             }
233             return param;
234         }
235         #endregion
236         #region 数据库连接和关闭
237         /// <summary>
238         /// 打开连接池
239         /// </summary>
240         private void Open()
241         {
242             // 打开连接池
243             if (con == null)
244             {
245                 //这里不仅需要using System.Configuration;还要在引用目录里添加
246                 con = new SqlConnection(GetSqlConnection());
247                 con.Open();
248             }
249         }
250         /// <summary>
251         /// 关闭连接池
252         /// </summary>
253         public void Close()
254         {
255             if (con != null)
256                 con.Close();
257         }
258         /// <summary>
259         /// 释放连接池
260         /// </summary>
261         public void Dispose()
262         {
263             // 确定连接已关闭
264             if (con != null)
265             {
266                 con.Dispose();
267                 con = null;
268             }
269         }
270         #endregion
271     }
原文地址:https://www.cnblogs.com/ygd-boke/p/4398367.html