C#-文件读取数据至dataset以更新database

/// <summary>
        /// 以dataset更新数据库
        /// </summary>
        /// <param name="ds_source">导入更新(insert,delete,update)数据</param>
        public bool UseDataSetUpdateDataBase(DataSet ds_source)
        {
            bool _return = false;
            try
            {
                for (int i = 0; i < ds_source.Tables.Count; i++)
                {
                    //*
                    MySqlDataAdapter sda = new MySqlDataAdapter("select * from " + ds_source.Tables[i].TableName, this.connectionString);


                    DataTable datatable = new DataTable();
                    sda.Fill(datatable);


                    datatable.PrimaryKey = new DataColumn[] { datatable.Columns[datatable.Columns[0].ColumnName.ToString()] };


                    //解决DataTable.Merge(DataTable)合并数据而导致列类型冲突问题
                    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                    DataTable targertDatatable = UpdateDataTableDataType(datatable, ds_source.Tables[i]);


                    datatable.Merge(targertDatatable);


                    MySqlCommandBuilder cmdBuilder = new MySqlCommandBuilder(sda);


                    MySqlCommand cmd = cmdBuilder.GetUpdateCommand();


                    cmd.CommandTimeout = 0;
                    sda.UpdateCommand = cmd;


                    sda.Update(datatable);


                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return _return;
        }


        /// <summary>
        /// 修改数据表DataTable列的类型和记录值(步骤:1.克隆表结构,2.复制表数据,3.返回结果)
        /// </summary>
        /// <param name="sourceDataTable">克隆表结构</param>
        /// <param name="targDataTable">复制表数据</param>
        /// <returns></returns>
        private DataTable UpdateDataTableDataType(DataTable sourceDataTable,DataTable targetDataTable)
        {
            DataTable datatableResult = new DataTable();
            datatableResult = sourceDataTable.Clone();


            foreach (DataRow row in targetDataTable.Rows)
            {
                DataRow rowNew = datatableResult.NewRow();
                foreach (DataColumn column in targetDataTable.Columns)
           {
                    rowNew[column.ColumnName.ToString()] = row[column.ColumnName.ToString()];
                }


                datatableResult.Rows.Add(rowNew);
            }
            return datatableResult;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值