ADO.NET與SQL SERVER之向數據庫中批量添加、修改數據


如何將多條數據批量插入到數據庫的數據表中?

使用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);
    }
}

對於刪除的批量操作可能與修改類似,這里暫時就不再多做實驗了,以后有機會再記錄下來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM