博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#:SqlHelper
阅读量:7226 次
发布时间:2019-06-29

本文共 15910 字,大约阅读时间需要 53 分钟。

虽然日常工作中都是调用别人写好的底层,但是要真正学到技术,还是要懂些底层原理,最好是能自己写底层

一、底层

注:引用命名空间

using System.Data;

using System.Data.SqlClient;

1     public class SqlHelper  2     {  3         ///   4         /// 数据库连接字符串  5         /// Data Source=数据库地址;Initial Catalog=数据库名称;Persist Security Info=True;User ID=用户名;Password=密码  6         ///   7         private string _SqlConnectionStr = "";  8         public string SqlConnectionStr { get { return _SqlConnectionStr; } }  9         public SqlHelper(string connStr) 10         { 11             this._SqlConnectionStr = connStr; 12         } 13         #region 单值查询       14         public string GetSingle(string sqlStr) 15         { 16             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr)) 17             { 18                 using (SqlCommand cmd = new SqlCommand(sqlStr, conn)) 19                 { 20                     try 21                     { 22                         conn.Open(); 23                         return String.Format("{0}", cmd.ExecuteScalar()); 24                     } 25                     catch(SqlException e) 26                     { 27                         throw e; 28                     } 29                     finally 30                     { 31                         conn.Close(); 32                     } 33                 } 34             } 35         } 36         public string GetSingle(string sqlStr,SqlParameter[] cmdParams) 37         { 38             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr)) 39             { 40                 using (SqlCommand cmd = new SqlCommand()) 41                 { 42                     try 43                     { 44                         conn.Open(); 45                         cmd.Connection = conn; 46                         cmd.CommandType = CommandType.Text; 47                         cmd.CommandText = sqlStr; 48                         cmd.Parameters.AddRange(cmdParams); 49                         return String.Format("{0}", cmd.ExecuteScalar()); 50                     } 51                     catch(SqlException e) 52                     { 53                         throw e; 54                     } 55                     finally 56                     { 57                         conn.Close(); 58                     } 59                 } 60             } 61         } 62         #endregion 63  64         #region 查询数据集         65         public DataSet Query(string sqlStr) 66         { 67             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr)) 68             { 69                 using (SqlDataAdapter ada = new SqlDataAdapter(sqlStr, conn)) 70                 { 71                     try 72                     { 73                         conn.Open(); 74                         DataSet ds = new DataSet(); 75                         ada.Fill(ds); 76                         return ds; 77                     } 78                     catch(SqlException e) 79                     { 80                         throw e; 81                     } 82                     finally 83                     { 84                         conn.Close(); 85                     } 86                 } 87             } 88         } 89         public DataSet Query(string sqlStr,SqlParameter[] cmdParams) 90         { 91             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr)) 92             { 93                 using (SqlCommand cmd = new SqlCommand()) 94                 { 95                     using (SqlDataAdapter ada = new SqlDataAdapter(cmd)) 96                     { 97                         try 98                         { 99                             conn.Open();100                             cmd.Connection = conn;101                             cmd.CommandType = CommandType.Text;102                             cmd.CommandText = sqlStr;103                             cmd.Parameters.AddRange(cmdParams);104 105                             DataSet ds = new DataSet();106                             ada.Fill(ds);107                             return ds;                            108                         }109                         catch(SqlException e)110                         {111                             throw e;112                         }113                         finally114                         {115                             conn.Close();116                         }117                     }118                 }119             }120         }121         public DataSet RunProcedure(string procName,SqlParameter[] cmdParams)122         {123             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))124             {125                 using (SqlCommand cmd = new SqlCommand())126                 {127                     using (SqlDataAdapter ada = new SqlDataAdapter(cmd))128                     {129                         try130                         {131                             conn.Open();132                             cmd.Connection = conn;133                             cmd.CommandType = CommandType.StoredProcedure;134                             cmd.CommandText = procName;135                             cmd.Parameters.AddRange(cmdParams);136 137                             DataSet ds = new DataSet();138                             ada.Fill(ds);139                             return ds;140                         }141                         catch(SqlException e)142                         {143                             throw e;144                         }145                         finally146                         {147                             conn.Close();148                         }149                     }150                 }151             }152         }153         #endregion154 155         #region 单表查询        156         public DataTable GetQueryData(string sqlStr)157         {158             DataSet ds = Query(sqlStr);159             if (ds != null && ds.Tables.Count > 0)160                 return ds.Tables[0];161             return null; 162         }163         public DataTable GetQueryData(string sqlStr ,SqlParameter[] cmdParams)164         {165             DataSet ds = Query(sqlStr, cmdParams);166             if (ds != null && ds.Tables.Count > 0)167                 return ds.Tables[0];168             return null;169         }170         public DataTable GetProcData(string procName,SqlParameter[] cmdParams)171         {172             DataSet ds = RunProcedure(procName, cmdParams);173             if (ds != null && ds.Tables.Count > 0)174                 return ds.Tables[0];175             return null;176         }177         #endregion178 179         #region 单行查询       180         public DataRow GetQueryRecord(string sqlStr)181         {182             DataTable dt = GetQueryData(sqlStr);183             if (dt != null && dt.Rows.Count > 0)184                 return dt.Rows[0];185             return null;186         }187         public DataRow GetQueryRecord(string sqlStr,SqlParameter[] cmdParams)188         {189             DataTable dt = GetQueryData(sqlStr, cmdParams);190             if (dt != null && dt.Rows.Count > 0)191                 return dt.Rows[0];192             return null;193         }194         public DataRow GetProcRecord(string procName,SqlParameter[] cmdParams)195         {196             DataTable dt = GetProcData(procName, cmdParams);197             if (dt != null && dt.Rows.Count > 0)198                 return dt.Rows[0];199             return null;200         }201         #endregion202 203         #region 使用完应关闭Reader204         public SqlDataReader ExecuteReader(string sqlStr)205         {206             SqlConnection conn = new SqlConnection(this._SqlConnectionStr);207             SqlCommand cmd = new SqlCommand(sqlStr, conn);208             try209             {210                 conn.Open();211                 return cmd.ExecuteReader(CommandBehavior.CloseConnection);212             }213             catch(SqlException e)214             {215                 throw e;216             }217         }218         public SqlDataReader ExecuteReeder(string sqlStr,SqlParameter[] cmdParams)219         {220             SqlConnection conn = new SqlConnection(this._SqlConnectionStr);221             SqlCommand cmd = new SqlCommand();222             try223             {224                 conn.Open();225                 cmd.Connection = conn;226                 cmd.CommandType = CommandType.Text;227                 cmd.CommandText = sqlStr;228                 cmd.Parameters.AddRange(cmdParams);229                 return cmd.ExecuteReader(CommandBehavior.CloseConnection);230             }231             catch(SqlException e)232             {233                 throw e;234             }235         }236         #endregion237 238         #region 执行sql语句        239         public int ExecuteSql(string sqlStr)240         {241             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))242             {243                 using (SqlCommand cmd = new SqlCommand(sqlStr, conn))244                 {245                     try246                     {247                         conn.Open();248                         return cmd.ExecuteNonQuery();249                     }250                     catch(SqlException e)251                     {252                         throw e;253                     }254                     finally255                     {256                         conn.Close();257                     }258                 }259             }260         }261         public int ExecuteSql(string sqlStr,SqlParameter[] cmdParams)262         {263             using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))264             {265                 using (SqlCommand cmd = new SqlCommand())266                 {267                     try268                     {269                         conn.Open();270                         cmd.Connection = conn;271                         cmd.CommandType = CommandType.Text;272                         cmd.CommandText = sqlStr;273                         cmd.Parameters.AddRange(cmdParams);274                         return cmd.ExecuteNonQuery();275                     }276                     catch(SqlException e)277                     {278                         throw e;279                     }280                     finally281                     {282                         conn.Close();283                     }284                 }285             }286         }287         #endregion288 289         #region 执行事务        290         public int ExecuteSqlTran(List
sqlStrList)291 {292 using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))293 {294 using (SqlCommand cmd = new SqlCommand())295 {296 using (SqlTransaction tran = conn.BeginTransaction())297 {298 try299 {300 cmd.Connection = conn;301 cmd.CommandType = CommandType.Text; 302 cmd.Transaction = tran;303 conn.Open();304 int count = 0;305 foreach(string sql in sqlStrList)306 {307 cmd.CommandText = sql;308 count += cmd.ExecuteNonQuery();309 }310 tran.Commit();311 return count;312 }313 catch(SqlException e)314 {315 tran.Rollback();316 throw e;317 }318 finally319 {320 conn.Close();321 }322 }323 }324 }325 }326 public int ExecuteSqlTran(List
> sqlStrList)327 {328 using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))329 {330 using (SqlCommand cmd = new SqlCommand())331 {332 using (SqlTransaction tran = conn.BeginTransaction())333 {334 try335 {336 cmd.Connection = conn;337 cmd.CommandType = CommandType.Text;338 cmd.Transaction = tran;339 conn.Open();340 int count = 0;341 foreach(var item in sqlStrList)342 {343 cmd.CommandText = item.Key;344 cmd.Parameters.Clear();345 cmd.Parameters.AddRange(item.Value);346 count += cmd.ExecuteNonQuery();347 }348 tran.Commit();349 return count;350 }351 catch(SqlException e)352 {353 tran.Rollback();354 throw e;355 }356 finally357 {358 conn.Close();359 }360 }361 }362 }363 }364 public int ExecuteProc(string procName,SqlParameter[] cmdParams)365 {366 using (SqlConnection conn = new SqlConnection(this._SqlConnectionStr))367 {368 using (SqlCommand cmd = new SqlCommand())369 {370 try371 {372 conn.Open();373 cmd.Connection = conn;374 cmd.CommandType = CommandType.StoredProcedure;375 cmd.CommandText = procName;376 cmd.Parameters.AddRange(cmdParams);377 return cmd.ExecuteNonQuery();378 }379 catch(SqlException e)380 {381 throw e;382 }383 finally384 {385 conn.Close();386 }387 }388 } 389 }390 #endregion391 }

二、工厂模式

1     public class DbProvider 2     { 3         private static string _SqlConnectionStr = null; 4         public static string SqlConnectionStr 5         { 6             get 7             { 8                 string connStr = _SqlConnectionStr; 9                 if (connStr == null)10                     connStr = "Data Source=(local);Initial Catalog=testDB;Persist Security Info=True;User ID=sa;Password=123456"; //一般这里是读取项目配置文件里的数据库参数来生成连接字符串11                 return connStr;12             }13         }14         public static SqlHelper SqlServer15         {16             get17             {18                 return new SqlHelper(SqlConnectionStr);19             }20         }21     }

三、实例使用

 

1     public class Demo2     {3         public DataTable QueryOrderInfo(string id)4         {5             string sql = "select * from order where id=@id";6             SqlParameter[] cmdParams = new SqlParameter[] { new SqlParameter("@id", id) };7             return DbProvider.SqlServer.GetQueryData(sql, cmdParams);8         }9     }

 

转载于:https://www.cnblogs.com/ecake/p/8425858.html

你可能感兴趣的文章
iOS 11正式版终于来了!强力助攻小程序
查看>>
开放平台API接口调用频率控制系统设计浅谈
查看>>
Lucene4.3进阶开发之潜龙勿用( 七)
查看>>
DTD和schema小总结
查看>>
去掉导航栏的黑线
查看>>
怎样让html加载完毕后加载js代码
查看>>
piwik 案例介绍
查看>>
敏感字过滤
查看>>
为什么我们要从 NodeJS 迁移到 Ruby on Rails
查看>>
Android 文件式数据库Realm
查看>>
Linux 面试知识点笔记
查看>>
论flex布局和box布局的华为meta8手机自带浏览器的兼容
查看>>
dubbo与springcloud初识
查看>>
iis web.config 配置示例
查看>>
归并排序
查看>>
java 的转义字符
查看>>
SharedPreferences的使用注意事项
查看>>
sofa-pbrpc高级用法
查看>>
Oracle 函数返回表实例2种写法实例
查看>>
mysql数据库主从复制
查看>>