zoukankan      html  css  js  c++  java
  • SqlServer DbHelper

      1     /// <summary>
      2     /// 数据库通用操作类
      3     /// </summary>
      4     public abstract class DbHelper
      5     {
      6         #region " 连接字符串 "
      7         //连接字符串
      8         //public static string ConnString = ConfigurationManager.ConnectionStrings["CommonSqlConnectionString"].ConnectionString;
      9         public static string DefaultConnString = string.Empty;
     10         public const int defaultCommandTimeout = 180;
     11         public const int defaultdbconfig = 1;
     12 
     13         #endregion
     14 
     15         #region " GetSqlCommand "
     16 
     17         /// <summary>
     18         /// 获取初始化好的Command对象
     19         /// </summary>
     20         /// <param name="conn">Connection对象</param>
     21         /// <param name="cmdText">命令文本</param>
     22         /// <param name="cmdType">命令类型</param>
     23         /// <param name="parameters">参数列表</param>
     24         /// <returns>初始化好的Command对象</returns>
     25         private static SqlCommand GetSqlCommand(SqlConnection conn, string cmdText, CommandType cmdType, SqlParameter[] parameters)
     26         {
     27             SqlCommand cmd = new SqlCommand(cmdText, conn);
     28             cmd.CommandType = cmdType;
     29             cmd.CommandTimeout = defaultCommandTimeout;
     30             if (parameters != null)
     31             {
     32                 cmd.Parameters.AddRange(parameters);
     33             }
     34 
     35             return cmd;
     36         }
     37 
     38         #endregion
     39 
     40         #region " ExecSqlDataSet "
     41 
     42         public static DataTable ExecSqlDataSet(string strSQL)
     43         {
     44             return ExecSqlDataSet(strSQL, null);
     45         }
     46 
     47         public static DataTable ExecSqlDataSet(string strSQL, SqlParameter[] parameters)
     48         {
     49             return ExecSqlDataSet(strSQL, parameters, DefaultConnString);
     50         }
     51 
     52         public static DataTable ExecSqlDataSet(string strSQL, SqlParameter[] parameters, string connStr)
     53         {
     54             if (string.IsNullOrWhiteSpace(connStr))
     55             {
     56                 return new DataTable();
     57             }
     58             using (SqlConnection conn = new SqlConnection(connStr))
     59             {
     60                 conn.Open();
     61                 SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
     62                 SqlDataAdapter da = new SqlDataAdapter(cmd);
     63                 DataSet ds = new DataSet();
     64                 da.Fill(ds);
     65                 cmd.Dispose();
     66                 da.Dispose();
     67                 return ds.Tables[0];
     68             }
     69         }
     70 
     71 
     72 
     73         #endregion
     74 
     75         #region " ExecSqlNonQuerry "
     76 
     77         /// <summary>
     78         /// 执行非查询SQL语句
     79         /// </summary>
     80         /// <param name="strSQL">待执行SQL语句</param>
     81         /// <returns>受影响的行数</returns>
     82         public static int ExecSqlNonQuerry(string strSQL)
     83         {
     84             return ExecSqlNonQuerry(strSQL, null);
     85         }
     86 
     87         /// <summary>
     88         /// 执行非查询的带参数的SQL语句
     89         /// </summary>
     90         /// <param name="strSQL">待执行SQL语句</param>
     91         /// <returns>受影响的行数</returns>
     92         public static int ExecSqlNonQuerry(string strSQL, SqlParameter[] parameters)
     93         {
     94             return ExecSqlNonQuerry(strSQL, parameters, DefaultConnString);
     95         }
     96 
     97 
     98 
     99         public static int ExecSqlNonQuerry(string strSQL, SqlParameter[] parameters, string connStr)
    100         {
    101             using (SqlConnection conn = new SqlConnection(connStr))
    102             {
    103                 conn.Open();
    104                 SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
    105                 cmd.CommandTimeout = 0;
    106                 int result = cmd.ExecuteNonQuery();
    107                 cmd.Dispose();
    108                 return result;
    109             }
    110         }
    111 
    112         #endregion
    113 
    114         #region " ExecSqlScalar "
    115 
    116         /// <summary>
    117         /// 执行统计查询
    118         /// </summary>
    119         /// <param name="strSQL">待执行SQL语句</param>
    120         /// <returns>执行结果的第1行第1列的值</returns>
    121         public static object ExecSqlScalar(string strSQL)
    122         {
    123             return ExecSqlScalar(strSQL, null);
    124         }
    125 
    126         /// <summary>
    127         /// 执行带参数的统计查询
    128         /// </summary>
    129         /// <param name="strSQL">待执行SQL语句</param>
    130         /// <param name="parameters">参数数组</param>
    131         /// <returns>执行结果的第1行第1列的值</returns>
    132         public static object ExecSqlScalar(string strSQL, SqlParameter[] parameters)
    133         {
    134             return ExecSqlScalar(strSQL, parameters, DefaultConnString);
    135         }
    136 
    137         /// <summary>
    138         /// 执行带参数的统计查询
    139         /// </summary>
    140         /// <param name="strSQL">待执行SQL语句</param>
    141         /// <param name="parameters">参数数组</param>
    142         /// <returns>执行结果的第1行第1列的值</returns>
    143         public static object ExecSqlScalar(string strSQL, SqlParameter[] parameters, string connStr)
    144         {
    145             using (SqlConnection conn = new SqlConnection(connStr))
    146             {
    147                 conn.Open();
    148                 SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
    149                 object result = cmd.ExecuteScalar();
    150                 cmd.Dispose();
    151                 return result;
    152             }
    153         }
    154 
    155         #endregion
    156 
    157         #region " ExecProcDataSet "
    158 
    159         /// <summary>
    160         /// 执行存储过程,返回执行结果
    161         /// </summary>
    162         /// <param name="procName">待执行存储过程</param>
    163         /// <returns>查询结果</returns>
    164         public static DataSet ExecProcDataSet(string procName)
    165         {
    166             return ExecProcDataSet(procName, null);
    167         }
    168         /// <summary>
    169         /// 执行带参数的存储过程,返回执行结果
    170         /// </summary>
    171         /// <param name="procName">待执行存储过程</param>
    172         /// <param name="parameters">参数数组</param>
    173         /// <returns>查询结果</returns>
    174         public static DataSet ExecProcDataSet(string procName, SqlParameter[] parameters)
    175         {
    176             return ExecProcDataSet(procName, parameters, DefaultConnString);
    177         }
    178 
    179         /// <summary>
    180         /// 执行带参数的存储过程,返回执行结果
    181         /// </summary>
    182         /// <param name="procName">待执行存储过程</param>
    183         /// <param name="parameters">参数数组</param>
    184         /// <returns>查询结果</returns>
    185         public static DataSet ExecProcDataSet(string procName, SqlParameter[] parameters, string connStr)
    186         {
    187             using (SqlConnection conn = new SqlConnection(connStr))
    188             {
    189                 conn.Open();
    190                 SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
    191                 cmd.CommandTimeout = 0;
    192                 SqlDataAdapter da = new SqlDataAdapter(cmd);
    193                 DataSet ds = new DataSet();
    194                 da.Fill(ds);
    195                 cmd.Dispose();
    196                 return ds;
    197             }
    198         }
    199 
    200 
    201         #endregion
    202 
    203         #region " ExecProcDataTable "
    204 
    205         /// <summary>
    206         /// 执行存储过程,返回执行结果
    207         /// </summary>
    208         /// <param name="procName">待执行存储过程</param>
    209         /// <returns>查询结果</returns>
    210         public static DataTable ExecProcDataTable(string procName)
    211         {
    212             return ExecProcDataSet(procName).Tables[0];
    213         }
    214         /// <summary>
    215         /// 执行带参数的存储过程,返回执行结果
    216         /// </summary>
    217         /// <param name="procName">待执行存储过程</param>
    218         /// <param name="parameters">参数数组</param>
    219         /// <returns>查询结果</returns>
    220         public static DataTable ExecProcDataTable(string procName, SqlParameter[] parameters)
    221         {
    222             return ExecProcDataSet(procName, parameters).Tables[0];
    223         }
    224 
    225         public static DataTable ExecProcDataTable(string procName, SqlParameter[] parameters, string connStr)
    226         {
    227             return ExecProcDataSet(procName, parameters, connStr).Tables[0];
    228         }
    229 
    230 
    231         #endregion
    232 
    233         #region " ExecProcNonQuerry "
    234 
    235         /// <summary>
    236         /// 执行非查询存储过程
    237         /// </summary>
    238         /// <param name="procName">待执行存储过程</param>
    239         /// <returns>受影响的行数</returns>
    240         public static int ExecProcNonQuerry(string procName)
    241         {
    242             return ExecProcNonQuerry(procName);
    243         }
    244 
    245         /// <summary>
    246         /// 执行非查询的带参数的存储过程
    247         /// </summary>
    248         /// <param name="procName">待执行存储过程</param>
    249         /// <returns>受影响的行数</returns>
    250         public static int ExecProcNonQuerry(string procName, SqlParameter[] parameters)
    251         {
    252             return ExecProcNonQuerry(procName, parameters, DefaultConnString);
    253         }
    254 
    255 
    256         /// <summary>
    257         /// 执行非查询的带参数的存储过程
    258         /// </summary>
    259         /// <param name="procName">待执行存储过程</param>
    260         /// <returns>受影响的行数</returns>
    261         public static int ExecProcNonQuerry(string procName, SqlParameter[] parameters, string connStr)
    262         {
    263             using (SqlConnection conn = new SqlConnection(connStr))
    264             {
    265                 conn.Open();
    266                 SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
    267                 int result = cmd.ExecuteNonQuery();
    268                 cmd.Dispose();
    269                 return result;
    270             }
    271         }
    272 
    273 
    274 
    275         #endregion
    276 
    277         #region " ExecSqlDataReader "
    278 
    279         /// <summary>
    280         /// 执行SQL语句,返回执行结果
    281         /// </summary>
    282         /// <param name="strSQL">待执行SQL语句</param>
    283         /// <returns>查询结果</returns>
    284         public static SqlDataReader ExecSqlDataReader(string strSQL)
    285         {
    286             return ExecSqlDataReader(strSQL, null);
    287         }
    288 
    289         /// <summary>
    290         /// 执行带参数的SQL语句,返回执行结果
    291         /// </summary>
    292         /// <param name="strSQL">待执行SQL语句</param>
    293         /// <param name="parameters">参数数组</param>
    294         /// <returns>查询结果</returns>
    295         public static SqlDataReader ExecSqlDataReader(string strSQL, SqlParameter[] parameters)
    296         {
    297             return ExecSqlDataReader(strSQL, parameters, DefaultConnString);
    298         }
    299 
    300         /// <summary>
    301         /// 执行带参数的SQL语句,返回执行结果
    302         /// </summary>
    303         /// <param name="strSQL">待执行SQL语句</param>
    304         /// <param name="parameters">参数数组</param>
    305         /// <returns>查询结果</returns>
    306         public static SqlDataReader ExecSqlDataReader(string strSQL, SqlParameter[] parameters, string connStr)
    307         {
    308             using (SqlConnection conn = new SqlConnection(connStr))
    309             {
    310                 conn.Open();
    311                 SqlCommand cmd = GetSqlCommand(conn, strSQL, CommandType.Text, parameters);
    312                 SqlDataReader result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    313                 cmd.Dispose();
    314                 return result;
    315             }
    316         }
    317 
    318 
    319         #endregion
    320 
    321         #region " ExecProcDataReader "
    322 
    323         /// <summary>
    324         /// 执行存储过程,返回执行结果
    325         /// </summary>
    326         /// <param name="procName">待执行存储过程</param>
    327         /// <returns>查询结果</returns>
    328         public static SqlDataReader ExecProcDataReader(string procName)
    329         {
    330             return ExecProcDataReader(procName, null);
    331         }
    332 
    333         /// <summary>
    334         /// 执行带参数的存储过程,返回执行结果
    335         /// </summary>
    336         /// <param name="procName">待执行存储过程</param>
    337         /// <param name="parameters">参数数组</param>
    338         /// <returns>查询结果</returns>
    339         public static SqlDataReader ExecProcDataReader(string procName, SqlParameter[] parameters)
    340         {
    341             return ExecProcDataReader(procName, parameters, DefaultConnString);
    342         }
    343 
    344         /// <summary>
    345         /// 执行带参数的存储过程,返回执行结果
    346         /// </summary>
    347         /// <param name="procName">待执行存储过程</param>
    348         /// <param name="parameters">参数数组</param>
    349         /// <returns>查询结果</returns>
    350         public static SqlDataReader ExecProcDataReader(string procName, SqlParameter[] parameters, string connStr)
    351         {
    352             using (SqlConnection conn = new SqlConnection(connStr))
    353             {
    354                 conn.Open();
    355 
    356                 SqlCommand cmd = GetSqlCommand(conn, procName, CommandType.StoredProcedure, parameters);
    357                 SqlDataReader result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    358                 cmd.Dispose();
    359                 return result;
    360             }
    361         }
    362 
    363 
    364 
    365         #endregion
    366 
    367         #region " DtToSqlServer "
    368 
    369         /// <summary>
    370         /// 将DataTable批量导入SqlServer
    371         /// </summary>
    372         /// <param name="dtExcel">数据表</param>
    373         /// <param name="tableName">目标数据表名</param>
    374         /// <param name="dtColName">对应列的数据集</param>
    375         public static void DtToSqlServer(DataTable dtExcel, string tableName, DataTable dtColName)
    376         {
    377             DtToSqlServer(dtExcel, tableName, dtColName, DefaultConnString);
    378         }
    379 
    380         /// <summary>
    381         /// 将DataTable批量导入SqlServer
    382         /// </summary>
    383         /// <param name="dtExcel">数据表</param>
    384         /// <param name="tableName">目标数据表名</param>
    385         /// <param name="dtColName">对应列的数据集</param>
    386         public static void DtToSqlServer(DataTable dtExcel, string tableName, DataTable dtColName, string connStr)
    387         {
    388             using (SqlConnection conn = new SqlConnection(connStr))
    389             {
    390                 conn.Open();
    391 
    392                 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
    393                 {
    394                     try
    395                     {
    396                         bulkCopy.DestinationTableName = tableName;//要插入的表的表名
    397                         for (int i = 0; i < dtColName.Rows.Count; i++)
    398                         {
    399                             bulkCopy.ColumnMappings.Add(dtColName.Rows[i][0].ToString().Trim(), dtColName.Rows[i][1].ToString().Trim());
    400 
    401                         }
    402 
    403                         bulkCopy.WriteToServer(dtExcel);
    404                     }
    405                     catch (Exception ex)
    406                     {
    407                         Console.WriteLine(ex.Message);
    408                     }
    409                 }
    410             }
    411         }
    412 
    413         #endregion
    414 
    415         #region
    416         /// <summary>
    417         /// 
    418         /// </summary>
    419         /// <param name="dbconfig">目标连接字符</param>
    420         /// <param name="tablename">目标表</param>
    421         /// <param name="dt">源数据</param>
    422         public static string SqlBulkCopyByDatatable(string tablename, DataTable table, string connStr, SqlConnection m_clsSqlConn)
    423         {
    424             string dataBaseStr = "";
    425             if (tablename.Contains("."))
    426             {
    427                 dataBaseStr = tablename.Substring(0, tablename.LastIndexOf(".") + 1);
    428                 tablename = tablename.Substring(tablename.LastIndexOf(".") + 1);
    429             }
    430 
    431             try
    432             {
    433                 string result = "";
    434                 SqlBulkCopy sqlBulkCopy = null;
    435                 if (m_clsSqlConn != null)
    436                 {
    437                     sqlBulkCopy = new SqlBulkCopy(m_clsSqlConn);
    438                     if (m_clsSqlConn.State == ConnectionState.Closed)
    439                     {
    440                         m_clsSqlConn.Open();
    441                     }
    442                 }
    443                 else
    444                 {
    445                     sqlBulkCopy = new SqlBulkCopy(connStr);
    446                 }
    447 
    448                 
    449 
    450                 sqlBulkCopy.DestinationTableName = dataBaseStr + ((tablename.IndexOf("[") > -1 && tablename.IndexOf("]") > -1) ? tablename : "[" + tablename + "]");
    451                 sqlBulkCopy.BulkCopyTimeout = 500;
    452                 //sqlBulkCopy.BatchSize = 800;
    453 
    454                 for (int i = 0; i < table.Columns.Count; i++)
    455                 {
    456                     sqlBulkCopy.ColumnMappings.Add(table.Columns[i].ColumnName, table.Columns[i].ColumnName);
    457                 }
    458 
    459                 if (table.Rows.Count > 0)
    460                 {
    461                     sqlBulkCopy.WriteToServer(table);
    462                 }
    463                 else
    464                 {
    465                     result = "表为空";
    466                 }
    467 
    468                 sqlBulkCopy.Close();
    469                 return result;
    470             }
    471             catch (Exception e)
    472             {
    473                 return e.Message;
    474             }
    475             finally
    476             {
    477                 try
    478                 {
    479                     if (m_clsSqlConn != null)
    480                     {
    481 
    482                         try
    483                         {
    484                             if (m_clsSqlConn.State == ConnectionState.Open)
    485                             {
    486                                 m_clsSqlConn.Close();
    487                             }
    488                         }
    489                         catch (Exception)
    490                         {
    491 
    492                         }
    493                     }
    494                 }
    495                 catch (Exception)
    496                 {
    497 
    498                 }
    499             }
    500         }
    501 
    502         public static string SqlBulkCopyByDatatable(string tablename, DataTable table, SqlConnection m_clsSqlConn)
    503         {
    504             return SqlBulkCopyByDatatable(tablename, table, string.Empty, m_clsSqlConn);
    505 
    506         }
    507         public static string SqlBulkCopyByDatatable(string tablename, DataTable table, string connStr)
    508         {
    509             return SqlBulkCopyByDatatable(tablename, table, connStr, null);
    510         }
    511 
    512         public static string SqlBulkCopyByDatatable(string tablename, DataTable table)
    513         {
    514             return SqlBulkCopyByDatatable(tablename, table, DefaultConnString, null);
    515         }
    516 
    517         public static string CreateTempTable(string tablename, DataTable table, string connStr)
    518         {
    519             return CreateTempTable(tablename, table, new SqlConnection(connStr));
    520         }
    521         public static string CreateTempTable(string tablename, DataTable table, SqlConnection connStr)
    522         {
    523             try
    524             {
    525 
    526                 string sqlstr = "CREATE TABLE [" + tablename + "](";
    527                 for (int i = 0; i < table.Columns.Count; i++)
    528                 {
    529                     switch (table.Columns[i].DataType.FullName)
    530                     {
    531                         case "System.String":
    532                             {
    533                                 sqlstr += "[" + table.Columns[i].ColumnName + "] [nvarchar](4000) NULL,";
    534                             }
    535                             break;
    536                         case "System.Int32":
    537                             {
    538                                 sqlstr += "[" + table.Columns[i].ColumnName + "] [int] NULL,";
    539                             }
    540                             break;
    541                         case "System.Double":
    542                             {
    543                                 sqlstr += "[" + table.Columns[i].ColumnName + "] [numeric](24,2) NULL,";
    544                             }
    545                             break;
    546                         case "System.DateTime":
    547                             {
    548                                 sqlstr += "[" + table.Columns[i].ColumnName + "] [datetime] NULL,";
    549                             }
    550                             break;
    551                         default:
    552                             {
    553                                 sqlstr += "[" + table.Columns[i].ColumnName + "] [nvarchar](4000) NULL,";
    554                             }
    555                             break;
    556                     }
    557                 }
    558                 sqlstr = sqlstr.Substring(0, sqlstr.Length - 1) + ")";
    559 
    560                 if (connStr.State != ConnectionState.Open)
    561                 {
    562                     connStr.Open();
    563                 }
    564 
    565                 SqlCommand cmd = GetSqlCommand(connStr, sqlstr, CommandType.Text, null);
    566                 int result = cmd.ExecuteNonQuery();
    567                 cmd.Dispose();
    568                 return "";
    569             }
    570             catch (Exception e)
    571             {
    572                 return e.ToString();
    573             }
    574         }
    575 
    576         #endregion
    577 
    578 
    579     }
    580   
  • 相关阅读:
    国内高通量基因测序公司成立 时间表
    递推法(归纳法)
    1. 基础知识 (直方图 柱状图 正态分布 模型 抽样分布 )
    1. 基础概念 (统计分布 抽样 置信区间 标准差)
    史上最全 | 39个RNAseq分析工具与对比
    转录组分析工具大比拼 (完整翻译版)
    C#、.NET Framework、CLR的关系
    C#程序集及程序集概念介绍
    SSM处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
    mybatis字符#与字符$的区别
  • 原文地址:https://www.cnblogs.com/xiao-sheng/p/11521616.html
Copyright © 2011-2022 走看看