批量更新数据- -(还有五一系列的原代)
由于最近作的项目跟数据库有关系- -特此把分析的资料分享下- -顺便广告下我现在是电脑维修工
//--思路通过一个SqlDataAdapter先检索数据到DataTable中,修改DataTable中的数据在更新,主要通过设置
EmpAdapter.UpdateBatchSize=100;//--该属性默认为,代表次处理条记录,是处理所有记录,不要设得太大
CommandUpdater.UpdatedRowSource = UpdateRowSource.None;
//-----------提高性能
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//数据容器
DataTable BtMm=new DataTable();
SqlDataAdapter EmpAdapter = new SqlDataAdapter();
//-----------选择数据
SqlConnection DbConSelect = new SqlConnection();
//-------------复制数据到这个连接中
SqlConnection DbConUpdater = new SqlConnection();
SqlCommand CommandSelect = new SqlCommand();
SqlCommand CommandUpdater = new SqlCommand();
//DoNET
DbConSelect.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
//DoNET
DbConUpdater.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
//---------选择更新的数据
CommandSelect.CommandText = "SELECT* FROM b";
CommandSelect.CommandType = CommandType.Text;
CommandSelect.Connection = DbConSelect;
//-------------------------------------设置更新
CommandUpdater.CommandText = "update b set ID=@ID";
CommandUpdater.Connection = DbConUpdater;
//--添加参数
SqlParameter a = new SqlParameter("@ID", SqlDbType.VarChar, 50, "ID");//注意最后一个Address代表从数据源检索的列
CommandUpdater.Parameters.Add(a);
EmpAdapter.SelectCommand=CommandSelect;
EmpAdapter.UpdateCommand=CommandUpdater;
EmpAdapter.Fill(BtMm);//---调用CommandSelect检索数据
DbConSelect.Close();
foreach (DataRow dr in BtMm.Rows)
{
dr["ID"] = "- -ooo"+System.DateTime.Now.ToString();
}
//更新触发
EmpAdapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
Label1.Text = "";
EmpAdapter.UpdateBatchSize=100;//--该属性默认为,代表次处理条记录,是处理所有记录,不要设得太大
CommandUpdater.UpdatedRowSource = UpdateRowSource.None;
//--------------------------------------------------------
//Both 将输出参数和第一个返回行都映射到DataSet 中的已更改的行。
//FirstReturnedRecord 将第一个返回行中的数据映射到DataSet 中的已更改的行。
//None 忽略任何返回的参数或行。
//OutputParameters 将输出参数映射到DataSet 中的已更改的行。
try
{
DbConUpdater.Open();
EmpAdapter.Update(Blog);
}
catch (Exception)
{
}
}
private void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
{
Label1.Text+=args.RowCount.ToString()+"<br>";
}
}
//------------web.confing设置
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=g;User ID=sa;Password=sa"/>
<add name="ConnectionStringInfo" connectionString="Data Source=.;Initial Catalog=g;User ID=sa;Password=sa"/>
</connectionStrings>
EmpAdapter.UpdateBatchSize=100;//--该属性默认为,代表次处理条记录,是处理所有记录,不要设得太大
CommandUpdater.UpdatedRowSource = UpdateRowSource.None;
//-----------提高性能
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//数据容器
DataTable BtMm=new DataTable();
SqlDataAdapter EmpAdapter = new SqlDataAdapter();
//-----------选择数据
SqlConnection DbConSelect = new SqlConnection();
//-------------复制数据到这个连接中
SqlConnection DbConUpdater = new SqlConnection();
SqlCommand CommandSelect = new SqlCommand();
SqlCommand CommandUpdater = new SqlCommand();
//DoNET
DbConSelect.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
//DoNET
DbConUpdater.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
//---------选择更新的数据
CommandSelect.CommandText = "SELECT* FROM b";
CommandSelect.CommandType = CommandType.Text;
CommandSelect.Connection = DbConSelect;
//-------------------------------------设置更新
CommandUpdater.CommandText = "update b set ID=@ID";
CommandUpdater.Connection = DbConUpdater;
//--添加参数
SqlParameter a = new SqlParameter("@ID", SqlDbType.VarChar, 50, "ID");//注意最后一个Address代表从数据源检索的列
CommandUpdater.Parameters.Add(a);
EmpAdapter.SelectCommand=CommandSelect;
EmpAdapter.UpdateCommand=CommandUpdater;
EmpAdapter.Fill(BtMm);//---调用CommandSelect检索数据
DbConSelect.Close();
foreach (DataRow dr in BtMm.Rows)
{
dr["ID"] = "- -ooo"+System.DateTime.Now.ToString();
}
//更新触发
EmpAdapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
Label1.Text = "";
EmpAdapter.UpdateBatchSize=100;//--该属性默认为,代表次处理条记录,是处理所有记录,不要设得太大
CommandUpdater.UpdatedRowSource = UpdateRowSource.None;
//--------------------------------------------------------
//Both 将输出参数和第一个返回行都映射到DataSet 中的已更改的行。
//FirstReturnedRecord 将第一个返回行中的数据映射到DataSet 中的已更改的行。
//None 忽略任何返回的参数或行。
//OutputParameters 将输出参数映射到DataSet 中的已更改的行。
try
{
DbConUpdater.Open();
EmpAdapter.Update(Blog);
}
catch (Exception)
{
}
}
private void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
{
Label1.Text+=args.RowCount.ToString()+"<br>";
}
}
//------------web.confing设置
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=g;User ID=sa;Password=sa"/>
<add name="ConnectionStringInfo" connectionString="Data Source=.;Initial Catalog=g;User ID=sa;Password=sa"/>
</connectionStrings>