当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现复制数据库 C#将A数据库数据转到B数据库

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文章以一个表为例,要转多个表则可将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(); 
 
  } 
 } 
} 

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网