sql SqlBulkCopy SqlDataAdapter 数据处理
public class sqlclass
{
//复制大量数据
public static void BulkToDB(DataTable dt, string TableName)
{
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnstr"].ConnectionString);
SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
bulkCopy.BulkCopyTimeout = 600;
bulkCopy.DestinationTableName = TableName;
bulkCopy.BatchSize = dt.Rows.Count;
try
{
sqlConn.Open();
if (dt != null && dt.Rows.Count != 0)
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
if (bulkCopy != null)
bulkCopy.Close();
}
}
private void btnTest_Click(object sender, EventArgs e)
{
// 定义与目标表的结构一致的内存表 排除自增id列
DataTable dtSource = new DataTable();
//列名称如果和目标表设置为一样,则后面可以不用进行字段映射
dtSource.Columns.Add("NameS", typeof(string));
dtSource.Columns.Add("AddressS", typeof(string));
// 向dt中增加1W条测试数据
DataRow dr;
for (int i = 0; i < 100; i++)
{
// 创建与dt结构相同的DataRow对象
dr = dtSource.NewRow();
dr["NameS"] = "Name" + i;
dr["AddressS"] = "Address" + i;
// 将dr追加到dt中
dtSource.Rows.Add(dr);
}
//将内存表dt中的1W条数据一次性插入到t_Data表中的相应列中
//System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
//st.Start();
string connStr = "server=.;database=TestDB;uid=sa;pwd=123456;";
using (System.Data.SqlClient.SqlBulkCopy copy = new System.Data.SqlClient.SqlBulkCopy(connStr))
{
//1 指定数据插入目标表名称
copy.DestinationTableName = "t_Data";
//2 告诉SqlBulkCopy对象 内存表中的 OrderNO1和Userid1插入到OrderInfos表中的哪些列中
copy.ColumnMappings.Add("NameS", "Name");
copy.ColumnMappings.Add("AddressS", "Address");
//3 将内存表dt中的数据一次性批量插入到OrderInfos表中
copy.WriteToServer(dtSource);
}
//st.Stop();
//MessageBox.Show("数据插入成功,总耗时为:" + st.ElapsedMilliseconds + "毫秒");
}
private void button1_Click(object sender, EventArgs e)
{
//1.0 定义与目标表的结构一致的内存表 排除自增id列
DataTable dtSource = new DataTable();
//列名称如果和目标表设置为一样,则后面可以不用进行字段映射
dtSource.Columns.Add("ID", typeof(string));
dtSource.Columns.Add("Name", typeof(string));
dtSource.Columns.Add("Address", typeof(string));
//2.0 向dt中增加1W条测试数据
DataRow dr;
for (int i = 0; i < 100 * 100; i++)
{
//1.0 创建与dt结构相同的DataRow对象
dr = dtSource.NewRow();
dr["Name"] = "NameId" + i;
dr["Address"] = "AddressId" + i;
//2.0 将dr追加到dt中
dtSource.Rows.Add(dr);
}
System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch(); //计算时间
st.Start();
string conn = "server=.;database=TestDB;uid=sa;pwd=123456;"; //连接数据库
string sqlText = "select * from t_Data"; //SQL语句,用于查出符合条件的数据库数据
//当上述工作完成之后,我们调用SqlDataAdapter的Fill()方法,将查询出来的数据表内容填充的一张DataTable里面
SqlDataAdapter SDA = new SqlDataAdapter(sqlText, conn);
SDA.Fill(dtSource);
//这个SqlCommandBuilder用来自动生成添加、删除、修改的语句,注意这个参数是刚才建立的SqlDataAdapter。
SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);
SDA.Update(dtSource); //数据录入
st.Stop();
// MessageBox.Show("数据插入成功,总耗时为:" + st.ElapsedMilliseconds + "毫秒");
}
}
DBDataAdapter是一个抽象基类,不能被实例化,并且继承DataAdapter类,IDBDataApdater,IdataAdapter以及Icloneable接口。DataAdapter成员较多,必须掌握的有以下几种:
-
SelectComand属性:获取或设置用于在数据源选择记录的命令。
-
UpdateCommand属性:获取或这只用于更新数据源中的记录的命令。
-
DeleteCommand属性:获取或设置用于从数据源中删除记录的命令。
-
InsertCommand属性:获取或设置用于将新记录插入数据源中的命令。
-
Fill方法:填充数据集。
-
Update方法:更新数据源。
作者:繁星点点滴滴
链接:http://www.imooc.com/article/28827
来源:慕课网
DBDataAdapter是一个抽象基类,不能被实例化,并且继承DataAdapter类,IDBDataApdater,IdataAdapter以及Icloneable接口。DataAdapter成员较多,必须掌握的有以下几种:
-
SelectComand属性:获取或设置用于在数据源选择记录的命令。
-
UpdateCommand属性:获取或这只用于更新数据源中的记录的命令。
-
DeleteCommand属性:获取或设置用于从数据源中删除记录的命令。
-
InsertCommand属性:获取或设置用于将新记录插入数据源中的命令。
-
Fill方法:填充数据集。
-
Update方法:更新数据源。
部分内容摘抄

浙公网安备 33010602011771号