欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现复制数据库 C#将A数据库数据转到B数据库

程序员文章站 2023-12-15 08:04:04
本文章以一个表为例,要转多个表则可将dataset关联多个表,下面给出完整代码,包括引用以及main函数与复制函数。 要说明的是,必须先用sql语句复制表结构,才能顺利的...

本文章以一个表为例,要转多个表则可将dataset关联多个表,下面给出完整代码,包括引用以及main函数与复制函数。
要说明的是,必须先用sql语句复制表结构,才能顺利的使用以下代码复制数据。

using system; 
using system.collections.generic; 
using system.linq; 
using system.text; 
using system.data; 
using system.data.sqlclient; 
using system.data.common; 
 
namespace copydata 
{ 
 class program 
 { 
  static void main(string[] args) 
  { 
   //要复制的表名 
   string table = "v_position"; 
    
   //构造连接字符串 
   sqlconnectionstringbuilder builder1 = new sqlconnectionstringbuilder(); 
   builder1.datasource = ".\\canfly";  //实例名称为canfly 
   builder1.initialcatalog = "desdata"; //目标数据库 
   builder1.integratedsecurity = true;  //使用windows身份验证 
 
   sqlconnectionstringbuilder builder2 = new sqlconnectionstringbuilder(); 
   builder2.datasource = ".\\canfly"; 
   builder2.initialcatalog = "bddata";  //源数据库 
   builder2.integratedsecurity = true; 
 
   //调用复制数据库函数 
   inserttable(builder1.connectionstring, builder2.connectionstring, table); 
  } 
   
  //参数为两个数据库的连接字符串 
  private static void inserttable(string constring1, string constring2, string tabstr) 
  { 
   //连接数据库 
   sqlconnection conn1 = new sqlconnection(); 
   conn1.connectionstring = constring1; 
   conn1.open(); 
 
   sqlconnection conn2 = new sqlconnection(); 
   conn2.connectionstring = constring2; 
   conn2.open(); 
 
   //填充dataset1 
   sqldataadapter adapter1 = new sqldataadapter("select * from " + tabstr, conn1); 
   dataset dataset1 = new dataset(); 
 
   if (dataset1 != null) 
   { 
    adapter1.fill(dataset1, tabstr); 
   } 
 
   sqldataadapter adapter2 = new sqldataadapter("select * from " + tabstr, conn2); 
   dataset dataset2 = new dataset(); 
 
   sqlcommand cmd2 = new sqlcommand("select count(*) from " + tabstr, conn2); 
   object res2 = cmd2.executescalar(); 
 
   if (res2 != null) 
   { 
    int ncount = convert.toint32(res2.tostring()); 
    if (ncount == 0) 
    { 
     conn1.close(); 
     conn2.close(); 
     return; 
    } 
   } 
 
   //填充dataset2 
   if (dataset2 != null) 
   { 
    adapter2.fill(dataset2, tabstr); 
   } 
 
   //复制数据 
   for (int j = 0; j < dataset2.tables[0].rows.count; j++) 
   { 
    dataset1.tables[0].loaddatarow(dataset2.tables[0].rows[j].itemarray, false); 
   } 
 
   //将dataset变换显示在与其关联的目标数据库 
   sqlcommandbuilder cb = new sqlcommandbuilder(adapter1); 
   adapter1.update(dataset1, tabstr); 
   cb.refreshschema(); 
 
   console.writeline("表" + tabstr + "复制成功!"); 
 
   conn1.close(); 
   conn2.close(); 
 
  } 
 } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: