如何将批量的数据存入SQL数据库中

在一些数据量比较大,而且操作数据库频繁的。此时需要将数据表datatable整块的存入数据库中。

不多说,直接上代码:

首先得新建一个数据库  

DataTable once_rec_date = new DataTable();

这个数据库得跟目标数据库的列的位置和大小都得一样。特别是类型,和位置。

就是列的位置和目标数据库的位置,顺序得 一模一样。因为都是块存储,所以地址什么的都得一样,千万不能少一列,自增列可以空在那边。

在初始化中初始化该表

                once_rec_date.Columns.Add("id", typeof(int));
                once_rec_date.Columns.Add("RevData_cmd", typeof(int));
                once_rec_date.Columns.Add("Node", typeof(int));
                once_rec_date.Columns.Add("Data", typeof(String));
                once_rec_date.Columns.Add("Ssingle", typeof(int));
                once_rec_date.Columns.Add("IsWiressData", typeof(int));
                once_rec_date.Columns.Add("Datatime", typeof(DateTime));
                once_rec_date.Columns.Add("Receivetime", typeof(DateTime));
                once_rec_date.Columns.Add("IsMatch", typeof(int));


初始化之后,在程序中填充该datatable

                DataRow newrow = once_rec_date.NewRow();
                newrow["RevData_cmd"] = cmd;
                newrow["Node"] = Nodeid;
                newrow["Data"] = datastring;
                newrow["IsWiressData"] = IsWiress;
                newrow["Ssingle"] = 1;
                newrow["Datatime"] = datatime;
                newrow["Receivetime"] = time1;
                newrow["IsMatch"] = 3;
                once_rec_date.Rows.Add(newrow);
                return true;

再在程序结束的时候调用下面的函数
AddDatatableToSQL

该函数主要实现块存储,整datatable


        ///-----------------------------------------------------------------*
        /// <summary>                                                       *
        /// 功    能:将数据表批量存入到数据库中                             *
        /// 函数调用:SqlBulkCopy                                            *
        /// </summary>                                                      *
        /// <param name="frameStruct">数据类型</param>                      *
        ///-----------------------------------------------------------------*   
        public bool AddDatatableToSQL(DataTable ScrTable)
        {
            using (SqlConnection thisConn = new SqlConnection(ConnectionStr))
            {
                try
                {
                    if (thisConn.State == ConnectionState.Closed)
                    {
                        thisConn.Open();
                    }
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(thisConn))
                    {
                        bulkCopy.DestinationTableName = "RevData";//这里的数据库名字可以更改,或者通过传参传进去.
                        try
                        {
                            bulkCopy.WriteToServer(ScrTable);
                            return true;
                        }
                        catch
                        {
                            return false;

                        }
                        finally
                        {
                            thisConn.Close();
                        }
                    }
                }
                catch
                {
 
                }
            }//end using
            return false;


        }


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值