在.net1.1中无论是对于批量插入整个datatable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便。而在.net2.0中,sqlclient命名空间下增加了几个新类帮助我们通过datatable或datareader批量迁移数据。数据源可以来自关系数据库或者xml文件,甚至webservice返回结果。其中最重要的一个类就是sqlbulkcopy类,使用它可以很方便的帮助我们把数据源的数据迁移到目标数据库中。
下面我们先通过一个简单的例子说明这个类的使用:
datetime starttime;
protected void button1_click(object sender, eventargs e)
{
starttime = datetime.now;
string srcconstring;
string desconstring;
sqlconnection srccon = new sqlconnection();
sqlconnection descon = new sqlconnection();
sqlcommand srccom = new sqlcommand();
sqldataadapter srcadapter = new sqldataadapter();
datatable dt = new datatable();
srcconstring =
configurationmanager.connectionstrings["srcdbconnectionstring"].connectionstring;
desconstring =
configurationmanager.connectionstrings["desdbconnectionstring"].connectionstring;
srccon.connectionstring = srcconstring;
srccom.connection = srccon;
srccom.commandtext = " select * from [srctable]";
srccom.commandtype = commandtype.text;
srccom.connection.open();
srcadapter.selectcommand = srccom;
srcadapter.fill(dt);
sqlbulkcopy desbulkop;
desbulkop = new sqlbulkcopy(desconstring,
sqlbulkcopyoptions.useinternaltransaction);
desbulkop.bulkcopytimeout = 500000000;
desbulkop.sqlrowscopied +=
new sqlrowscopiedeventhandler(onrowscopied);
desbulkop.notifyafter = dt.rows.count;
try
{
desbulkop.destinationtablename = "srctable";
desbulkop.writetoserver(dt);
}
catch (exception ex)
{
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器