C#复制数据库,将数据库数据转到另一个数据库

来源:互联网 发布:船 vhf 编程 sdk 编辑:程序博客网 时间:2024/04/20 04:14

本文章以一个表为例,要转多个表则可将DataSet关联多个表,下面给出完整代码,包括引用以及main函数与复制函数。

要说明的是,必须先用Sql语句复制表结构,才能顺利的使用以下代码复制数据。

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Data;  
  6. using System.Data.SqlClient;  
  7. using System.Data.Common;  
  8.   
  9. namespace CopyData  
  10. {  
  11.     class Program  
  12.     {  
  13.         static void Main(string[] args)  
  14.         {  
  15.             //要复制的表名   
  16.             string table = "V_Position";  
  17.               
  18.             //构造连接字符串   
  19.             SqlConnectionStringBuilder builder1 = new SqlConnectionStringBuilder();  
  20.             builder1.DataSource = ".\\CANFLY";      //实例名称为CANFLY  
  21.             builder1.InitialCatalog = "desdata";    //目标数据库  
  22.             builder1.IntegratedSecurity = true;     //使用Windows身份验证  
  23.   
  24.             SqlConnectionStringBuilder builder2 = new SqlConnectionStringBuilder();  
  25.             builder2.DataSource = ".\\CANFLY";  
  26.             builder2.InitialCatalog = "bddata";     //源数据库  
  27.             builder2.IntegratedSecurity = true;  
  28.   
  29.             //调用复制数据库函数   
  30.             InsertTable(builder1.ConnectionString, builder2.ConnectionString, table);  
  31.         }  
  32.           
  33.         //参数为两个数据库的连接字符串   
  34.         private static void InsertTable(string conString1, string conString2, string tabStr)  
  35.         {  
  36.             //连接数据库   
  37.             SqlConnection conn1 = new SqlConnection();  
  38.             conn1.ConnectionString = conString1;  
  39.             conn1.Open();  
  40.   
  41.             SqlConnection conn2 = new SqlConnection();  
  42.             conn2.ConnectionString = conString2;  
  43.             conn2.Open();  
  44.   
  45.             //填充DataSet1   
  46.             SqlDataAdapter adapter1 = new SqlDataAdapter("select * from " + tabStr, conn1);  
  47.             DataSet dataSet1 = new DataSet();  
  48.   
  49.             if (dataSet1 != null)  
  50.             {  
  51.                 adapter1.Fill(dataSet1, tabStr);  
  52.             }  
  53.   
  54.             SqlDataAdapter adapter2 = new SqlDataAdapter("select * from " + tabStr, conn2);  
  55.             DataSet dataSet2 = new DataSet();  
  56.   
  57.             SqlCommand cmd2 = new SqlCommand("select count(*) from " + tabStr, conn2);  
  58.             Object res2 = cmd2.ExecuteScalar();  
  59.   
  60.             if (res2 != null)  
  61.             {  
  62.                 int nCount = Convert.ToInt32(res2.ToString());  
  63.                 if (nCount == 0)  
  64.                 {  
  65.                     conn1.Close();  
  66.                     conn2.Close();  
  67.                     return;  
  68.                 }  
  69.             }  
  70.   
  71.             //填充DataSet2   
  72.             if (dataSet2 != null)  
  73.             {  
  74.                 adapter2.Fill(dataSet2, tabStr);  
  75.             }  
  76.   
  77.             //复制数据   
  78.             for (int j = 0; j < dataSet2.Tables[0].Rows.Count; j++)  
  79.             {  
  80.                 dataSet1.Tables[0].LoadDataRow(dataSet2.Tables[0].Rows[j].ItemArray, false);  
  81.             }  
  82.   
  83.             //将DataSet变换显示在与其关联的目标数据库  
  84.             SqlCommandBuilder cb = new SqlCommandBuilder(adapter1);  
  85.             adapter1.Update(dataSet1, tabStr);  
  86.             cb.RefreshSchema();  
  87.   
  88.             Console.WriteLine("表" + tabStr + "复制成功!");  
  89.   
  90.             conn1.Close();  
  91.             conn2.Close();  
  92.   
  93.         }  
  94.     }  
  95. }  
0 0
原创粉丝点击