Sqlhelper(1)

    xiaoxiao2021-09-20  72

    public class SqlHelper     {         private static SqlConnection con;         SqlBulkCopy bulkCopy;                  //打开数据连接         private void Open()         {                         if (con == null)                 con = new SqlConnection("Data Source='(local)';Initial Catalog='C6';User ID='sa';PassWord='Aa123456.'");             if (con.State == System.Data.ConnectionState.Closed)                 con.Open();         }         //关闭连接         public static void Close()         {             con.Close();         }         public DataTable ExecuteDataTable(string sql)         {             DataTable result = null;             try             {                 Open();                 SqlCommand com = new SqlCommand(sql, con);                 //result = new DataTable();                 DataSet ds = new DataSet();                 SqlDataAdapter ada = new SqlDataAdapter(com);                 ada.Fill(ds);                 result = ds.Tables[0];             }             catch (Exception err)             {                 throw new Exception(err.Message);             }             finally             {                 Close();             }             return result;         }         //批量插入数据         public int BulkToDB(DataTable dt, string targetTableName)         {             try             {                 bulkCopy = new SqlBulkCopy(con);   //用其它源的数据有效批量加载sql server表中                 bulkCopy.DestinationTableName = targetTableName;    //服务器上目标表的名称                 bulkCopy.BatchSize = dt.Rows.Count;   //每一批次中的行数                 con.Open();                 if (dt != null && dt.Rows.Count != 0)                 {                     for (int i = 0; i < dt.Columns.Count; i++)                         bulkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName.ToString(), dt.Columns[i].ColumnName.ToString());                     //将提供的数据源中的所有行复制到目标表中                     bulkCopy.WriteToServer(dt);                     return 1;                 }                 return 0;             }             catch (Exception err)             {                 throw new Exception(err.Message);             }             finally             {                 Close();                 if (bulkCopy != null)                     bulkCopy.Close();             }         }         public int ExecuteNonQuery(string sql)         {             try             {                 Open();                 SqlCommand com = new SqlCommand(sql, con);                 return com.ExecuteNonQuery();             }             catch (Exception err)             {                 throw new Exception(err.Message);             }             finally             {                 Close();             }         }         public string ExecuteScalar(string sql)         {             try             {                 Open();                 SqlCommand com = new SqlCommand(sql, con);                 object scalarOjbect = com.ExecuteScalar();                 if (scalarOjbect == DBNull.Value || scalarOjbect == null)                     return "";                 else                     return com.ExecuteScalar().ToString();             }             catch (Exception e)             {                 throw new Exception(e.Message);             }             finally             {                 Close();             }         }         public DataSet ExecuteDataset(string sql, string srcTable)         {             try             {                 Open();                 SqlDataAdapter adp = new SqlDataAdapter(sql, con);                 adp.SelectCommand.CommandTimeout = 3600;                 DataSet ds = new DataSet();                 adp.Fill(ds, srcTable);                 return ds;             }             catch (Exception e)             {                 throw new Exception(e.Message);             }             finally             {                 Close();             }         }         public SqlDataReader ExecuteDatareader(string sql, string a)         {             try             {                 Open();                 SqlCommand com = new SqlCommand(sql, con);                 return com.ExecuteReader();             }             catch (Exception e)             {                 throw new Exception(e.Message);             }         }         /// <summary>         /// 操作数据库,事物         /// </summary>         /// <param name="sql">sql命令</param>         /// <returns>对于Update,Insert,Delete返回受影响行数,-1执行失败;对于create table等,返回-1表示成功</returns>         public   int ExecuteNonQueryTransactionLIstSQL(List<string> sql)         {             int result = 0;             SqlTransaction sqlTransaction = null;             Open();             //SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConString"].ToString());             try             {                 if (con.State == System.Data.ConnectionState.Closed)                     con.Open();                 sqlTransaction = con.BeginTransaction();                 foreach (var item in sql)                 {                     SqlCommand com = new SqlCommand(item, con);                     com.Transaction = sqlTransaction;                     result += com.ExecuteNonQuery();                 }                 sqlTransaction.Commit();             }             catch (Exception err)             {                 if (sqlTransaction != null)                     sqlTransaction.Rollback();                 throw new Exception(err.Message);             }             finally             {                                con.Close();             }             return result;             //return SqlHelper.ExecuteNonQuery(DBConfig.ConString, CommandType.Text, sql);         }         #region  List<T>         /// <summary>         /// 读取多条数据         /// </summary>dd         /// <param name="sql"></param>         /// <returns>返回 泛型集合</returns>         public IList<T> SelectIn<T>(string sql, string srcTable)         {             try             {                 Open();                 DataSet ds = ExecuteDataset(sql, srcTable);                 IList<T> l = DataSetToIList<T>(ds, 0);                 return DataSetToIList<T>(ds, 0);             }             catch (Exception)             {                 return null;             }         }         #region 泛型和DataSet互换方法         /// <summary>         /// DataSet转换为泛型集合         /// </summary>         /// <typeparam name="T">泛型</typeparam>         /// <param name="p_DataSet">DataSet</param>         /// <param name="p_TableIndex">待转换数据表索引</param>         /// <returns>泛型集合</returns>         private static IList<T> DataSetToIList<T>(DataSet p_DataSet, int p_TableIndex)         {             if (p_DataSet == null || p_DataSet.Tables.Count < 0)                 return null;             if (p_TableIndex > p_DataSet.Tables.Count - 1)                 return null;             if (p_TableIndex < 0)                 p_TableIndex = 0;             if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)                 return null;             DataTable p_Data = p_DataSet.Tables[p_TableIndex];             // 返回值初始化             IList<T> result = new List<T>();             for (int j = 0; j < p_Data.Rows.Count; j++)             {                 T _t = (T)Activator.CreateInstance(typeof(T));                 PropertyInfo[] propertys = _t.GetType().GetProperties();                 foreach (PropertyInfo pi in propertys)                 {                     for (int i = 0; i < p_Data.Columns.Count; i++)                     {                         // 属性与字段名称一致的进行赋值                         if (pi.Name.ToLower().Equals(p_Data.Columns[i].ColumnName.ToLower()))                         {                             // 数据库NULL值单独处理                             if (p_Data.Rows[j][i] != DBNull.Value)                             {                                 pi.SetValue(_t, p_Data.Rows[j][i], null);                             }                             else                                 pi.SetValue(_t, null, null);                             break;                         }                     }                 }                 result.Add(_t);             }             return result;         }         /// <summary>         /// DataSet转换为实体类         /// </summary>         /// <typeparam name="T">实体类</typeparam>         /// <param name="p_DataSet">DataSet</param>         /// <param name="p_TableIndex">待转换数据表索引</param>         /// <returns>实体类</returns>         private static T DataSetToT<T>(DataSet p_DataSet, int p_TableIndex)         {             if (p_DataSet == null || p_DataSet.Tables.Count < 0)                 return default(T);             if (p_TableIndex > p_DataSet.Tables.Count - 1)                 return default(T);             if (p_TableIndex < 0)                 p_TableIndex = 0;             if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)                 return default(T);             DataTable p_Data = p_DataSet.Tables[p_TableIndex];             // 返回值初始化             IList<T> result = new List<T>();             for (int j = 0; j < p_Data.Rows.Count; j++)             {                 T _t = (T)Activator.CreateInstance(typeof(T));                 PropertyInfo[] propertys = _t.GetType().GetProperties();                 foreach (PropertyInfo pi in propertys)                 {                     for (int i = 0; i < p_Data.Columns.Count; i++)                     {                         // 属性与字段名称一致的进行赋值                         if (pi.Name.ToLower().Equals(p_Data.Columns[i].ColumnName.ToLower()))                         {                             // 数据库NULL值单独处理                             if (p_Data.Rows[j][i] != DBNull.Value)                             {                                 pi.SetValue(_t, p_Data.Rows[j][i], null);                             }                             else                             {                                 pi.SetValue(_t, null, null);                             }                             break;                         }                     }                 }                 result.Add(_t);             }             return result[0];         }         #endregion         #endregion     }
    转载请注明原文地址: https://ju.6miu.com/read-677761.html

    最新回复(0)