如何將多條數據批量插入到數據庫的數據表中?
使用SqlBulkCopy,示例如下:
/// <summary> /// 批量導入數據到數據庫 /// </summary> /// <param name="table">數據源表</param> /// <param name="tableName">數據庫表名</param> /// <param name="connStr">數據庫連接字符串</param> /// <param name="mappings">源表與數據庫表的列映射關系</param> public static void BulkCopyDataTable(DataTable table, string tableName,string connStr, params SqlBulkCopyColumnMapping[] mappings) { //使用SqlBulkCopy來批量導入數據到數據庫 using (SqlBulkCopy bulkcopy = new SqlBulkCopy(connStr)) { //寫出數據庫中的目標表名 bulkcopy.DestinationTableName = tableName; //建立數據源與數據庫之間列的映射,就是要讓SqlBulkCopy知道你要把哪一列插到哪一列 foreach (SqlBulkCopyColumnMapping mapping in mappings) { //也可以通過bulkcopy.ColumnMappings.Add("數據源列名", "數據表列名"); bulkcopy.ColumnMappings.Add(mapping); } //將數據提交到數據庫中 bulkcopy.WriteToServer(table); } }
如何對數據庫中數據表的多條數據進行批量更新?
使用SqlDataAdapter,示例如下:
//建立數據庫連接 using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); //新建一個SqlDataAdapter,因為只用它來做更新,所以在實例化時就不再填寫Select的SQL語句 using (SqlDataAdapter adapter = new SqlDataAdapter("", conn)) { //寫出更新需要使用的SQL語句 string sqlStr = "update TableName set NeedUpdate = @NewValue where Guid = @Guid"; //新建一個SqlCommand賦給adapter的UpdateCommand adapter.UpdateCommand = new SqlCommand(sqlStr, conn); //向UpdateCommand添加列映射,參數含義分別是: //SQL語句參數名、字段數據類型、字段長度(我也不知道這啥意思,可能char什么的要用到)和數據源表列名 adapter.UpdateCommand.Parameters.Add("@NewValue", SqlDbType.Bit, 1, "NewValue"); adapter.UpdateCommand.Parameters.Add("@Guid", SqlDbType.UniqueIdentifier, 1, "Guid"); //當設置UpdateBatchSize為非1時,需要將此設為None adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None; //設置每次到服務器批處理的行數 adapter.UpdateBatchSize = 0; //進行更新操作,table是數據源表,里面的數據能符合上面參數的映射關系即可 adapter.Update(table); } }
對於刪除的批量操作可能與修改類似,這里暫時就不再多做實驗了,以后有機會再記錄下來。
