批量更新数据- -(还有五一系列的原代)

由于最近作的项目跟数据库有关系- -特此把分析的资料分享下- -顺便广告下我现在是电脑维修工

//--思路通过一个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>
 
posted @ 2007-05-03 10:11  苹果王子  阅读(1390)  评论(5编辑  收藏  举报