1 public class CommonDal 2 { 3 #region 數據導入相關 4 /// <summary> 5 /// 批量導入數據 6 /// </summary> 7 /// <param name="dt">將要導入的數據源</param> 8 /// <param name="TbName">目標表名稱</param> 9 public static void Bulk_ImportDatable(DataTable dt, string TargetTableName) 10 { 11 using (SqlConnection destinationConnection = DBHelper.CreateConnection()) 12 { 13 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection)) 14 { 15 try 16 { 17 bulkCopy.DestinationTableName = TargetTableName;//要插入的表的表明 18 for (int i = 0; i < dt.Columns.Count; i++) 19 { 20 bulkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); 21 } 22 bulkCopy.WriteToServer(dt); 23 } 24 catch (Exception ex) 25 { 26 Console.WriteLine(ex.Message); 27 } 28 } 29 } 30 31 } 32 #endregion 33 #region 數據表操作相關 34 #region 增 35 /// <summary> 36 /// 向數據表中插入一條數據 37 /// </summary> 38 /// <typeparam name="T">插入數據的參數類型,注意名稱和表明保持一致</typeparam> 39 /// <param name="obj">插入的數據對象</param> 40 /// <returns></returns> 41 public int InsertInfo<T>(T obj) where T : class 42 { 43 using (IDbConnection conn = DBHelper.CreateConnection()) 44 { 45 return conn.Insert<T>(obj); 46 } 47 } 48 #endregion 49 #region 刪除 50 /// <summary> 51 /// 通過表名稱truncate掉表數據 52 /// </summary> 53 /// <param name="tablename">需要清除數據的表名稱</param> 54 /// <returns></returns> 55 public bool truncateTableByName(string tablename) 56 { 57 using (IDbConnection conn = DBHelper.CreateConnection()) 58 { 59 string sql = " TRUNCATE TABLE " + tablename; 60 DynamicParameters param = new DynamicParameters(); 61 param.Add("TableName", tablename); 62 return conn.Execute(sql, param) > 0; 63 } 64 } 65 /// <summary> 66 /// 將主表數據清除並且清除部分關聯信息表的關聯數據 67 /// </summary> 68 /// <param name="truncateTableName">要清除數據的主表名稱</param> 69 /// <param name="deleteTableName">要清除關聯數據的關聯信息表名稱</param> 70 /// <param name="sqlWhereList">清除關聯信息數據的Where條件</param> 71 public void truncateAndDeleteTable(string truncateTableName, string deleteTableName, List<SqlWhereModel> sqlWhereList) 72 { 73 truncateTableByName(truncateTableName); 74 deleteTableByName(deleteTableName, sqlWhereList); 75 } 76 77 /// <summary> 78 /// 通過表名稱和Where條件delete掉表數據 79 /// </summary> 80 /// <param name="TableName">需要清除數據的表名稱</param> 81 /// <param name="paramModel">Where參數集合</param> 82 /// <returns></returns> 83 public bool deleteTableByName(string TableName, List<SqlWhereModel> paramModel) 84 { 85 using (IDbConnection conn = DBHelper.CreateConnection()) 86 { 87 //sql語句拼接時使用StringBulider 防止長度限制 88 StringBuilder sql = new StringBuilder("delete from " + TableName); 89 StringBuilder sbwhere = new StringBuilder(" where 1=1 "); 90 DynamicParameters parameters = new DynamicParameters(); 91 paramModel.ForEach(p => 92 { 93 sbwhere.AppendLine(" and " + p.ParamName + " = @" + p.ParamValue); 94 parameters.Add(p.ParamValue); 95 }); 96 97 return conn.Execute(sql.AppendLine(sbwhere.ToString()).ToString(), parameters) > 0; 98 } 99 } 100 /// <summary> 101 /// 通過表名稱delete掉表數據 102 /// </summary> 103 /// <param name="TableName">需要清除數據的表名稱</param> 104 /// <returns></returns> 105 public bool deleteTableByName(string TableName) 106 { 107 using (IDbConnection conn = DBHelper.CreateConnection()) 108 { 109 //sql語句拼接時使用StringBulider 防止長度限制 110 StringBuilder sql = new StringBuilder(@"delete from " + TableName); 111 return conn.Execute(sql.ToString()) > 0; 112 } 113 } 114 #endregion 115 #region 修改 116 117 #endregion 118 #region 查詢 119 /// <summary> 120 /// 通過id判斷是否存在記錄 121 /// </summary> 122 /// <param name="dc">傳入id</param> 123 /// <returns>返回泛型對象</returns> 124 public T getExistsById<T>(long id) where T : class 125 { 126 using (IDbConnection coon = DBHelper.CreateConnection()) 127 { 128 return coon.Get<T>(id); 129 } 130 } 131 /// <summary> 132 /// 通過name查詢是否存在 133 /// </summary> 134 /// <typeparam name="T"></typeparam> 135 /// <param name="Name"></param> 136 /// <returns></returns> 137 public T getExistsByName<T>(string Name) where T : dtModelBase 138 { 139 using (IDbConnection coon = DBHelper.CreateConnection()) 140 { 141 142 var predicate = Predicates.Field<T>(f => f.Name, Operator.Eq, Name); 143 IEnumerable<T> list = coon.GetList<T>(predicate); 144 return list.FirstOrDefault(); 145 } 146 } 147 /// <summary> 148 /// 通過標准名Ename查詢是否存在 149 /// </summary> 150 /// <typeparam name="T"></typeparam> 151 /// <param name="Name"></param> 152 /// <returns></returns> 153 public T getExistsByEName<T>(string EName, string Tbname) where T : class 154 { 155 using (IDbConnection coon = DBHelper.CreateConnection()) 156 { 157 string sql = "select * from " + Tbname + " where EName =@EName"; 158 IEnumerable<T> list = coon.Query<T>(sql, new { EName }); 159 return list.FirstOrDefault(); 160 } 161 } 162 /// <summary> 163 /// 讀取數據源 164 /// </summary> 165 /// <returns></returns> 166 public List<T> GetSourceDt<T>() where T : class 167 { 168 IEnumerable<T> list = null; 169 using (IDbConnection conn = DBHelper.CreateConnection()) 170 { 171 list = conn.GetList<T>().ToList(); 172 } 173 return list.ToList(); 174 } 175 #endregion 176 #endregion 177 }
1 public class SqlWhereModel 2 { 3 public string ParamName { get; set; } 4 public string ParamValue { get; set; } 5 }
結合上一篇List和DataTable相互轉換的類直接 進行數據庫批量插入操作調用示例
1 DataTable dt = ListTranDataTableHelper.ToDataTable(listv, DatableProperty.PropertyRenameDic); 2 CommonDal.Bulk_ImportDatable(dt, targetTableName);
