展开全部
在一些数据量比较大,而且操作数据库频繁的。此时需要将e69da5e887aa3231313335323631343130323136353331333361326233数据表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
///-----------------------------------------------------------------*
/// *
/// 功 能:将数据表批量存入到数据库中 *
/// 函数调用:SqlBulkCopy *
/// *
/// 数据类型 *
///-----------------------------------------------------------------*
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;
}