zoukankan      html  css  js  c++  java
  • 自定义 SqlHelp

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Data.SqlClient;
      4 using System.Data;
      5 using System.Configuration;
      6 using System.Reflection;
      7 using System.Collections;
      8 namespace DataHelp
      9 {
     10     #region ADO.NET 访问数据库辅助类 +SqlHelp
     11     //Author:兵兵 +SqlHelp
     12     public class SqlHelp
     13     {
     14         /// <summary>
     15         /// DB连接字符串
     16         /// </summary>
     17         public static readonly string DB= ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
     18 
     19 
     20         #region ExecuteDataReader +ExecuteDataReader(string cmdText, List<SqlParameter> parameters,string connString)
     21         /// <summary>
     22         /// ExecuteDataReader(执行有参存储过程)
     23         /// </summary>
     24         /// <param name="cmdText">存储过程名称</param>
     25         /// <param name="parameters">参数列表</param>
     26         /// <param name="connString">连接字符串</param>
     27         /// <returns>SqlDataReader对象</returns>
     28         public static SqlDataReader ExecuteDataReader(string cmdText, List<SqlParameter> parameters, string connString)
     29         {
     30             SqlConnection conn = new SqlConnection(connString);
     31             SqlCommand cmd = new SqlCommand();
     32             CommandBuilder(cmdText, cmd, conn, parameters);
     33             SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
     34             cmd.Parameters.Clear();
     35             return reader;
     36 
     37         }
     38         #endregion
     39 
     40         #region ExecuteDataReader +ExecuteDataReader(string cmdText,string connString)
     41         /// <summary>
     42         /// ExecuteDataReader(执行无参存储过程)
     43         /// </summary>
     44         /// <param name="cmdText">存储过程</param>
     45         /// <param name="connString">连接字符串</param>
     46         /// <returns>SqlDataReader对象</returns>
     47         public static SqlDataReader ExecuteDataReader(string cmdText, string connString)
     48         {
     49 
     50             SqlConnection conn = new SqlConnection(connString);
     51             SqlCommand cmd = new SqlCommand();
     52             CommandBuilder(cmdText, cmd, conn);
     53             SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
     54             cmd.Parameters.Clear();
     55             return reader;
     56 
     57         }
     58         #endregion
     59 
     60         #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
     61         /// <summary>
     62         /// ExecuteNonQuery(执行有参存储过程)
     63         /// </summary>
     64         /// <param name="cmdText">存储过程名称</param>
     65         /// <param name="parameters">参数列表</param>
     66         /// <param name="connString">连接字符串</param>
     67         /// <returns>数据库受影响的行数</returns>
     68         public static int ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
     69         {
     70             using (SqlConnection conn = new SqlConnection(connString))
     71             {
     72                 SqlCommand cmd = new SqlCommand();
     73                 CommandBuilder(cmdText, cmd, conn, parameters);
     74                 int result = cmd.ExecuteNonQuery();
     75                 cmd.Parameters.Clear();
     76                 return result;
     77             }
     78         }
     79         #endregion
     80 
     81         #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, string connString)
     82         /// <summary>
     83         /// ExecuteNonQuery(执行无参存储过程)
     84         /// </summary>
     85         /// <param name="cmdText">存储过程名称</param>
     86         /// <param name="connString">连接字符串</param>
     87         /// <returns>数据库受影响的行数</returns>
     88         public static int ExecuteNonQuery(string cmdText, string connString)
     89         {
     90 
     91             using (SqlConnection conn = new SqlConnection(connString))
     92             {
     93                 SqlCommand cmd = new SqlCommand();
     94                 CommandBuilder(cmdText, cmd, conn);
     95                 int result = cmd.ExecuteNonQuery();
     96                 cmd.Parameters.Clear();
     97                 return result;
     98             }
     99 
    100 
    101         }
    102         #endregion
    103 
    104         #region ExecuteScalar +ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
    105         /// <summary>
    106         /// ExecuteScalar(执行有参存储过程)
    107         /// </summary>
    108         /// <param name="cmdText">存储过程名称</param>
    109         /// <param name="parameters">参数列表</param>
    110         /// <param name="connString">连接字符串</param>
    111         /// <returns>object</returns>
    112         public static object ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
    113         {
    114 
    115             using (SqlConnection conn = new SqlConnection(connString))
    116             {
    117                 SqlCommand cmd = new SqlCommand();
    118                 CommandBuilder(cmdText, cmd, conn, parameters);
    119                 object o = cmd.ExecuteScalar();
    120                 cmd.Parameters.Clear();
    121                 return o;
    122             }
    123 
    124 
    125         }
    126         #endregion
    127 
    128         #region ExecuteScalar +ExecuteScalar(string cmdText, string connString)
    129         /// <summary>
    130         /// ExecuteScalar(执行无参存储过程)
    131         /// </summary>
    132         /// <param name="cmdText">存储过程名称</param>
    133         /// <param name="connString">连接字符串</param>
    134         /// <returns>object</returns>
    135         public static object ExecuteScalar(string cmdText, string connString)
    136         {
    137 
    138             using (SqlConnection conn = new SqlConnection(connString))
    139             {
    140                 SqlCommand cmd = new SqlCommand();
    141                 CommandBuilder(cmdText, cmd, conn);
    142                 object o = cmd.ExecuteScalar();
    143                 cmd.Parameters.Clear();
    144                 return o;
    145             }
    146 
    147 
    148         }
    149         #endregion
    150 
    151         #region ExecuteDataTable +ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
    152         /// <summary>
    153         /// ExecuteDataTable(用适配器执行有参存储过程)
    154         /// </summary>
    155         /// <param name="cmdText">存储过程名称</param>
    156         /// <param name="parameters">参数列表</param>
    157         /// <param name="connString">连接字符串</param>
    158         /// <returns>DataTable</returns>
    159         public static DataTable ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
    160         {
    161 
    162             using (SqlConnection conn = new SqlConnection(connString))
    163             {
    164                 SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
    165                 //命令类型为存储过程
    166                 da.DeleteCommand.CommandType = CommandType.StoredProcedure;
    167                 da.SelectCommand.Parameters.AddRange(parameters.ToArray());
    168                 DataTable dt = new DataTable();
    169                 da.Fill(dt);
    170                 return dt;
    171             }
    172 
    173 
    174         }
    175         #endregion
    176 
    177         #region ExecuteDataTable +ExecuteDataTable(string cmdText, string connString)
    178         /// <summary>
    179         /// ExecuteDataTable(用适配器执行无参存储过程)
    180         /// </summary>
    181         /// <param name="cmdText">存储过程名称</param>
    182         /// <param name="connString">连接字符串</param>
    183         /// <returns>DataTable</returns>
    184         public static DataTable ExecuteDataTable(string cmdText, string connString)
    185         {
    186 
    187             using (SqlConnection conn = new SqlConnection(connString))
    188             {
    189                 SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
    190                 //命令类型为存储过程
    191                 da.DeleteCommand.CommandType = CommandType.StoredProcedure;
    192                 DataTable dt = new DataTable();
    193                 da.Fill(dt);
    194                 return dt;
    195             }
    196         }
    197         #endregion
    198 
    199         #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
    200         /// <summary>
    201         /// ExecuteDataTableProc(执行有参存储过程)
    202         /// </summary>
    203         /// <param name="cmdText">存储过程名称</param>
    204         /// <param name="parameters">参数列表</param>
    205         /// <param name="connString">连接字符串</param>
    206         /// <returns>DataTable</returns>
    207         public static DataTable ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
    208         /// <summary>
    209         {
    210 
    211             using (SqlConnection conn = new SqlConnection(connString))
    212             {
    213                 SqlCommand cmd = new SqlCommand();
    214                 CommandBuilder(cmdText, cmd, conn, parameters);
    215                 SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    216                 DataTable dt = new DataTable();
    217                 adapter.Fill(dt);
    218                 cmd.Parameters.Clear();
    219                 return dt;
    220 
    221             }
    222 
    223         }
    224         #endregion
    225 
    226         #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, string connString)
    227         /// <summary>
    228         /// ExecuteDataTableProc(执行无参存储过程)
    229         /// </summary>
    230         /// <param name="parameters">参数列表</param>
    231         /// <param name="connString">连接字符串</param>
    232         /// <returns>DataTable</returns>
    233         public static DataTable ExecuteDataTableProc(string cmdText, string connString)
    234         {
    235 
    236             using (SqlConnection conn = new SqlConnection(connString))
    237             {
    238                 SqlCommand cmd = new SqlCommand();
    239                 CommandBuilder(cmdText, cmd, conn);
    240                 SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    241                 DataTable dt = new DataTable();
    242                 adapter.Fill(dt);
    243                 cmd.Parameters.Clear();
    244                 return dt;
    245 
    246             }
    247 
    248         }
    249         #endregion
    250 
    251         #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
    252         /// <summary>
    253         /// 准备命令对象(执行有参存储过程)
    254         /// </summary>
    255         /// <param name="cmdText">存储过程名称</param>
    256         /// <param name="cmd">命令对象</param>
    257         /// <param name="conn">连接对象</param>
    258         /// <param name="parameters">参数列表</param>
    259         private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
    260         {
    261 
    262             if (conn.State == System.Data.ConnectionState.Closed)
    263                 conn.Open();
    264             cmd.Connection = conn;
    265             cmd.CommandText = cmdText;
    266             cmd.CommandType = System.Data.CommandType.StoredProcedure;
    267             if (parameters.Count > 0)
    268                 cmd.Parameters.AddRange(parameters.ToArray());
    269 
    270         }
    271         #endregion
    272 
    273         #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
    274         /// <summary>
    275         /// 准备命令对象(执行无参存储过程)
    276         /// </summary>
    277         /// <param name="cmdText">存储过程名称</param>
    278         /// <param name="cmd">命令对象</param>
    279         /// <param name="conn">连接对象</param>
    280         private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
    281         {
    282 
    283             if (conn.State == System.Data.ConnectionState.Closed)
    284                 conn.Open();
    285             cmd.Connection = conn;
    286             cmd.CommandText = cmdText;
    287             cmd.CommandType = System.Data.CommandType.StoredProcedure;
    288 
    289         }
    290         #endregion
    291 
    292         #region 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
    293         /// <summary>
    294         /// 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
    295         /// </summary>
    296         /// <param name="dt">所有数据的表格</param>
    297         /// <param name="tableName">表名</param>
    298         public static int BulkInsert(DataTable dt, string tableName, string connStr)
    299         {
    300             int result = -1;
    301             if (string.IsNullOrEmpty(tableName))
    302                 throw new Exception("请指定你要插入的表名");
    303             var count = dt.Rows.Count;
    304             if (count == 0)
    305                 return result;
    306             SqlTransaction sqlBulkTran = null;
    307             try
    308             {
    309                 using (SqlConnection conn = new SqlConnection(connStr))
    310                 {
    311                     if (conn.State == System.Data.ConnectionState.Closed)
    312                         conn.Open();
    313                     sqlBulkTran = conn.BeginTransaction();
    314                     using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints, sqlBulkTran))
    315                     {
    316                         copy.DestinationTableName = tableName;//指定目标表
    317                         copy.WriteToServer(dt);//将dt中的所有行复制到SqlBulkCopy对象的DestinationTableName指定的目标表中
    318                         if (sqlBulkTran != null)
    319                         {
    320                             sqlBulkTran.Commit();
    321                         }
    322                         result = 1;
    323                     }
    324 
    325                 }
    326 
    327             }
    328             catch (Exception)
    329             {
    330                 if (sqlBulkTran != null)
    331                 {
    332                     sqlBulkTran.Rollback();
    333                 }
    334             }
    335             finally
    336             {
    337                 sqlBulkTran = null;
    338             }
    339 
    340             return result;
    341         }
    342         #endregion
    343 
    344          
    345     }
    346     #endregion
    347 }
    348 #region list 扩展方法 Author:高兵兵
    349 public static class IListUtil
    350 {
    351     /// <summary>
    352     /// 将集合类转换成DataTable 
    353     /// </summary>
    354     /// <param name="list">集合</param>
    355     /// <returns></returns>
    356     public static DataTable AsDataTable<T>(this IList<T> list)
    357     {
    358         DataTable result = new DataTable();
    359         if (list.Count > 0)
    360         {
    361             PropertyInfo[] propertys = typeof(T).GetProperties();
    362             foreach (PropertyInfo pi in propertys)
    363             {
    364                 result.Columns.Add(pi.Name, pi.PropertyType);
    365             }
    366 
    367             for (int i = 0; i < list.Count; i++)
    368             {
    369                 ArrayList tempList = new ArrayList();
    370                 foreach (var item in propertys)
    371                 {
    372                     object obj = item.GetValue(list[i], null);
    373                     tempList.Add(obj);
    374                 }
    375 
    376                 object[] array = tempList.ToArray();
    377                 result.LoadDataRow(array, true);
    378             }
    379         }
    380         return result;
    381     }
    382 
    383 
    384 }
    385 #endregion
  • 相关阅读:
    希尔排序之C++实现(初级版)
    CF9D How many trees?
    IOI2015 boxes纪念品盒
    CSP-S 2019图论总结
    数据生成器
    Special-Judge模板
    CF293B Distinct Paths
    浅谈几种常见的剪枝方式
    CF620E New Year Tree
    浅谈DFS序
  • 原文地址:https://www.cnblogs.com/gaobing/p/3878342.html
Copyright © 2011-2022 走看看