zoukankan      html  css  js  c++  java
  • sql server DbHelperSQL类

      1 using JKTAC_LMIS.Entity;
      2 using System;
      3 using System.Collections;
      4 using System.Collections.Generic;
      5 using System.Configuration;
      6 using System.Data;
      7 using System.Data.SqlClient;
      8 using System.Linq;
      9 using System.Security.Cryptography;
     10 using System.Text;
     11 using System.Threading.Tasks;
     12 
     13 namespace JKTAC_LMIS.DAL
     14 {
     15     public abstract class DbHelperSQL
     16     {
     17         public DbHelperSQL()
     18         {
     19 
     20         }
     21         //定义连接字符串。
     22         //protected static string ConnectionString = DecryptDBStr(ConfigurationManager.AppSettings["SQLConnectionString"], "zhangweilong");
     23         protected static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
     24         protected static SqlConnection Connection;
     25         //定义数据库的打开和关闭方法
     26         protected static void Open()
     27         {
     28             if (Connection == null)
     29             {
     30                 Connection = new SqlConnection(ConnectionString);
     31             }
     32             if (Connection.State.Equals(ConnectionState.Closed))
     33             {
     34                 Connection.Open();
     35             }
     36         }
     37         protected static void Close()
     38         {
     39             if (Connection != null)
     40             {
     41                 Connection.Close();
     42             }
     43         }
     44         //判断用Sql查询的数据是否存在,true表示存在,False表示不存在
     45         public static bool Exists(string strSql)
     46         {
     47             object obj = DbHelperSQL.GetSingle(strSql);
     48             int cmdresult;
     49             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
     50             {
     51                 cmdresult = 0;
     52             }
     53             else
     54             {
     55                 cmdresult = int.Parse(obj.ToString());
     56             }
     57             if (cmdresult == 0)
     58             {
     59                 return false;
     60             }
     61             else
     62             {
     63                 return true;
     64             }
     65         }
     66         public static bool Exists(string strSql, params SqlParameter[] cmdParms)
     67         {
     68             object obj = DbHelperSQL.GetSingle(strSql, cmdParms);
     69             int cmdresult;
     70             if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
     71             {
     72                 cmdresult = 0;
     73             }
     74             else
     75             {
     76                 cmdresult = int.Parse(obj.ToString());
     77             }
     78             if (cmdresult == 0)
     79             {
     80                 return false;
     81             }
     82             else
     83             {
     84                 return true;
     85             }
     86         }
     87         //返回SqlDataReader数据集,使用完后记得关闭SqlDataReader
     88         public static SqlDataReader GetDataReader(string SqlString)
     89         {
     90             try
     91             {
     92                 Open();
     93                 SqlCommand cmd = new SqlCommand(SqlString, Connection);
     94                 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
     95             }
     96             catch (System.Data.SqlClient.SqlException ex)
     97             {
     98                 throw new Exception(ex.Message);
     99             }
    100         }
    101         // 公有方法,获取数据,返回一个DataSet。    
    102         public static DataSet GetDataSet(string SqlString)
    103         {
    104             using (SqlConnection connection = new SqlConnection(ConnectionString))
    105             {
    106                 connection.Open();
    107                 using (SqlCommand cmd = new SqlCommand(SqlString, connection))
    108                 {
    109                     using (SqlDataAdapter da = new SqlDataAdapter(cmd))
    110                     {
    111                         DataSet ds = new DataSet();
    112                         try
    113                         {
    114                             da.Fill(ds, "ds");
    115                             cmd.Parameters.Clear();
    116                         }
    117                         catch (System.Data.SqlClient.SqlException ex)
    118                         {
    119                             throw new Exception(ex.Message);
    120                         }
    121                         return ds;
    122                     }
    123                 }
    124             }
    125         }
    126         // 公有方法,获取数据,返回一个DataTable。    
    127         public static DataTable GetDataTable(string SqlString)
    128         {
    129             DataSet dataset = GetDataSet(SqlString);
    130             return dataset.Tables[0];
    131         }
    132         // 公有方法,获取数据,返回首行首列。    
    133         public static string GetSHSL(string SqlString)
    134         {
    135             DataSet dataset = GetDataSet(SqlString);
    136             if (dataset.Tables[0].Rows.Count > 0)
    137             {
    138                 return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());
    139             }
    140             else
    141             {
    142                 return "";
    143             }
    144         }
    145         // 公有方法,获取数据,返回首行首列的INT值。    
    146         public static string GetSHSLInt(string SqlString)
    147         {
    148             DataSet dataset = GetDataSet(SqlString);
    149             if (dataset.Tables[0].Rows.Count > 0)
    150             {
    151                 return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());
    152             }
    153             else
    154             {
    155                 return "0";
    156             }
    157         }
    158         // 公有方法,获取数据,返回一个DataRow。
    159         public static DataRow GetDataRow(string SqlString)
    160         {
    161             DataSet dataset = GetDataSet(SqlString);
    162             if (dataset.Tables[0].Rows.Count > 0)
    163             {
    164                 return dataset.Tables[0].Rows[0];
    165             }
    166             else
    167             {
    168                 return null;
    169             }
    170         }
    171         // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1
    172         public static int ExecuteSQL(String SqlString, Hashtable MyHashTb)
    173         {
    174             int count = -1;
    175             Open();
    176             try
    177             {
    178                 SqlCommand cmd = new SqlCommand(SqlString, Connection);
    179                 foreach (DictionaryEntry item in MyHashTb)
    180                 {
    181                     string[] CanShu = item.Key.ToString().Split('|');
    182                     if (CanShu[1].ToString().Trim() == "string")
    183                     {
    184                         cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);
    185                     }
    186                     else if (CanShu[1].ToString().Trim() == "int")
    187                     {
    188                         cmd.Parameters.Add(CanShu[0], SqlDbType.Int);
    189                     }
    190                     else if (CanShu[1].ToString().Trim() == "text")
    191                     {
    192                         cmd.Parameters.Add(CanShu[0], SqlDbType.Text);
    193                     }
    194                     else if (CanShu[1].ToString().Trim() == "datetime")
    195                     {
    196                         cmd.Parameters.Add(CanShu[0], SqlDbType.DateTime);
    197                     }
    198                     else
    199                     {
    200                         cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);
    201                     }
    202                     cmd.Parameters[CanShu[0]].Value = item.Value.ToString();
    203                 }
    204                 count = cmd.ExecuteNonQuery();
    205             }
    206             catch
    207             {
    208                 count = -1;
    209             }
    210             finally
    211             {
    212                 Close();
    213             }
    214             return count;
    215         }
    216         // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1
    217         public static int ExecuteSQL(String SqlString)
    218         {
    219             int count = -1;
    220             Open();
    221             try
    222             {
    223                 SqlCommand cmd = new SqlCommand(SqlString, Connection);
    224                 count = cmd.ExecuteNonQuery();
    225             }
    226             catch
    227             {
    228                 count = -1;
    229             }
    230             finally
    231             {
    232                 Close();
    233             }
    234             return count;
    235         }
    236         // 公有方法,执行一组Sql语句。返回是否成功,采用事务管理,发现异常时回滚数据
    237         public static bool ExecuteSQL(string[] SqlStrings)
    238         {
    239             bool success = true;
    240             Open();
    241             SqlCommand cmd = new SqlCommand();
    242             SqlTransaction trans = Connection.BeginTransaction();
    243             cmd.Connection = Connection;
    244             cmd.Transaction = trans;
    245             try
    246             {
    247                 foreach (string str in SqlStrings)
    248                 {
    249                     cmd.CommandText = str;
    250                     cmd.ExecuteNonQuery();
    251                 }
    252                 trans.Commit();
    253             }
    254             catch
    255             {
    256                 success = false;
    257                 trans.Rollback();
    258             }
    259             finally
    260             {
    261                 Close();
    262             }
    263             return success;
    264         }
    265         // Trans 
    266         public static bool ExecuteSqlByTrans(List<SqlAndPrams> list)
    267         {
    268             bool success = true;
    269             Open();
    270             SqlCommand cmd = new SqlCommand();
    271             SqlTransaction trans = Connection.BeginTransaction();
    272             cmd.Connection = Connection;
    273             cmd.Transaction = trans;
    274             try
    275             {
    276                 foreach (SqlAndPrams item in list)
    277                 {
    278                     if (item.cmdParms==null)
    279                     {
    280                         cmd.CommandText = item.sql;
    281                         cmd.ExecuteNonQuery();
    282                     }
    283                     else
    284                     {
    285                         cmd.CommandText = item.sql;
    286                         cmd.CommandType = CommandType.Text;//cmdType;
    287                         cmd.Parameters.Clear();
    288                         foreach (SqlParameter parameter in item.cmdParms)
    289                         {
    290                             if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
    291                                 (parameter.Value == null))
    292                             {
    293                                 parameter.Value = DBNull.Value;
    294                             }
    295                             cmd.Parameters.Add(parameter);
    296                         }
    297                         cmd.ExecuteNonQuery();
    298                     }
    299                     
    300                 }
    301                 trans.Commit();
    302             }
    303             catch(Exception e)
    304             {
    305                 success = false;
    306                 trans.Rollback();
    307             }
    308             finally
    309             {
    310                 Close();
    311             }
    312             return success;
    313         }
    314         // 执行一条计算查询结果语句,返回查询结果(object)。        
    315         public static object GetSingle(string SQLString)
    316         {
    317             using (SqlConnection connection = new SqlConnection(ConnectionString))
    318             {
    319                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))
    320                 {
    321                     try
    322                     {
    323                         connection.Open();
    324                         object obj = cmd.ExecuteScalar();
    325                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    326                         {
    327                             return null;
    328                         }
    329                         else
    330                         {
    331                             return obj;
    332                         }
    333                     }
    334                     catch (System.Data.SqlClient.SqlException e)
    335                     {
    336                         connection.Close();
    337                         throw e;
    338                     }
    339                 }
    340             }
    341         }
    342         public static object GetSingle(string SQLString, int Times)
    343         {
    344             using (SqlConnection connection = new SqlConnection(ConnectionString))
    345             {
    346                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))
    347                 {
    348                     try
    349                     {
    350                         connection.Open();
    351                         cmd.CommandTimeout = Times;
    352                         object obj = cmd.ExecuteScalar();
    353                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    354                         {
    355                             return null;
    356                         }
    357                         else
    358                         {
    359                             return obj;
    360                         }
    361                     }
    362                     catch (System.Data.SqlClient.SqlException e)
    363                     {
    364                         connection.Close();
    365                         throw e;
    366                     }
    367                 }
    368             }
    369         }
    370         public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
    371         {
    372             using (SqlConnection connection = new SqlConnection(ConnectionString))
    373             {
    374                 using (SqlCommand cmd = new SqlCommand())
    375                 {
    376                     try
    377                     {
    378                         PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    379                         object obj = cmd.ExecuteScalar();
    380                         cmd.Parameters.Clear();
    381                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    382                         {
    383                             return null;
    384                         }
    385                         else
    386                         {
    387                             return obj;
    388                         }
    389                     }
    390                     catch (System.Data.SqlClient.SqlException e)
    391                     {
    392                         throw e;
    393                     }
    394                 }
    395             }
    396         }
    397         // 执行SQL语句,返回影响的记录数
    398         public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
    399         {
    400             using (SqlConnection connection = new SqlConnection(ConnectionString))
    401             {
    402                 using (SqlCommand cmd = new SqlCommand())
    403                 {
    404                     try
    405                     {
    406                         PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    407                         int rows = cmd.ExecuteNonQuery();
    408                         cmd.Parameters.Clear();
    409                         return rows;
    410                     }
    411                     catch (System.Data.SqlClient.SqlException e)
    412                     {
    413                         throw e;
    414                     }
    415                 }
    416             }
    417         }
    418         //执行查询语句,返回DataSet
    419         public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)
    420         {
    421             using (SqlConnection connection = new SqlConnection(ConnectionString))
    422             {
    423                 SqlCommand cmd = new SqlCommand();
    424                 PrepareCommand(cmd, connection, null, SQLString, cmdParms);
    425                 using (SqlDataAdapter da = new SqlDataAdapter(cmd))
    426                 {
    427                     DataSet ds = new DataSet();
    428                     try
    429                     {
    430                         da.Fill(ds, "ds");
    431                         cmd.Parameters.Clear();
    432                     }
    433                     catch (System.Data.SqlClient.SqlException ex)
    434                     {
    435                         throw new Exception(ex.Message);
    436                     }
    437                     return ds;
    438                 }
    439             }
    440         }
    441         private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
    442         {
    443             if (conn.State == ConnectionState.Open)
    444                 conn.Close();
    445             if (conn.State != ConnectionState.Open)
    446                 conn.Open();
    447             cmd.Connection = conn;
    448             cmd.CommandText = cmdText;
    449             if (trans != null)
    450                 cmd.Transaction = trans;
    451             cmd.CommandType = CommandType.Text;//cmdType;
    452             if (cmdParms != null)
    453             {
    454 
    455 
    456                 foreach (SqlParameter parameter in cmdParms)
    457                 {
    458                     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
    459                         (parameter.Value == null))
    460                     {
    461                         parameter.Value = DBNull.Value;
    462                     }
    463                     cmd.Parameters.Add(parameter);
    464                 }
    465             }
    466         }
    467 
    468         #region 执行存储过程 Add by LQB 2014-12-18
    469         public static object RunProcedure(string storedProcName, IDataParameter[] paramenters)
    470         {
    471             using (SqlConnection connection = new SqlConnection(ConnectionString))
    472             {
    473                 connection.Open();
    474                 SqlCommand command = BuildQueryCommand(connection, storedProcName, paramenters);
    475                 object obj = command.ExecuteNonQuery();
    476                 //object obj = command.Parameters["@Output_Value"].Value; //@Output_Value和具体的存储过程参数对应
    477                 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
    478                 {
    479                     return null;
    480                 }
    481                 else
    482                 {
    483                     return obj;
    484                 }
    485             }
    486         }
    487 
    488         private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
    489         {
    490             SqlCommand command = new SqlCommand(storedProcName, connection);
    491             command.CommandType = CommandType.StoredProcedure;
    492             foreach (SqlParameter parameter in parameters)
    493             {
    494                 if (parameter != null)
    495                 {
    496                     // 检查未分配值的输出参数,将其分配以DBNull.Value.
    497                     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
    498                         (parameter.Value == null))
    499                     {
    500                         parameter.Value = DBNull.Value;
    501                     }
    502                     command.Parameters.Add(parameter);
    503                 }
    504             }
    505 
    506             return command;
    507         }
    508         #endregion
    509     }
    510 }
  • 相关阅读:
    解析大型.NET ERP系统 权限模块设计与实现
    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
    解析大型.NET ERP系统 单据编码功能实现
    解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
    Windows 10 部署Enterprise Solution 5.5
    解析大型.NET ERP系统 设计异常处理模块
    解析大型.NET ERP系统 业务逻辑设计与实现
    解析大型.NET ERP系统 多国语言实现
    Enterprise Solution 管理软件开发框架流程实战
    解析大型.NET ERP系统 数据审计功能
  • 原文地址:https://www.cnblogs.com/xujunbao/p/8340459.html
Copyright © 2011-2022 走看看