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

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

  }
 }
}

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

(0)

相关推荐

  • C#实现文件与二进制互转并存入数据库

    //这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDialog dialog = new OpenFileDialog()) { //只能单选一个文件 dialog.Multiselect = false; //选择一个文件 if (dialog.ShowDialog() == DialogResult.OK) { try { //把选择的文件路径给tx

  • 数据库 数据类型float到C#类型decimal, float数据类型转化无效

    今天运行系统突然出错,数据类型转化无效,错误在system.data.sqlclient.get_decimal()方法,初步估计是数据库的float类型转换为c#的decimal类型时出错了,实体类使用的是decimal?类型,心想就算数据库里的数值是空,也不能出现转换错误啊. 网上百般搜索,很多人遇到类似情况,多数是直接去float类型时候出错,如(float)dr[0],后来看到有说应该是先转化成double,然后在转化成float就可以了 尝试了一下把实体类的decimal?类型的字段改

  • 四种数据库随机获取10条数据的方法

    四种数据库随机获取10条数据的方法 SQL Server: 复制代码 代码如下: SELECT TOP 10 * FROM T_USER ORDER BY NEWID() ORACLE: 复制代码 代码如下: SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE RONUM <= 10 MySQL: 复制代码 代码如下: SELECT * FROM T_USER  ORDER BY  RAND() LIM

  • 如何把Excel数据导入到SQL2008数据库的实例方法

    复制代码 代码如下: private void AddManyData_Click(object sender, RoutedEventArgs e)        {            OpenFileDialog openFileDialog = new OpenFileDialog();            openFileDialog.Filter = "Excel文件|*.xls"; if ((bool)openFileDialog.ShowDialog())     

  • 通过php快速统计某个数据库中每张表的数据量

    所以自己简单写了几行代码用来实现以上需求 执行结果: 复制代码 代码如下: <?php $conn=mysql_connect('localhost','root',''); mysql_select_db('数据库',$conn); $sql="SELECT information_schema.TABLES.TABLE_NAME FROM information_schema. TABLES WHERE table_schema = '数据库'"; $res=mysql_qu

  • 解决MySQL数据库意外崩溃导致表数据文件损坏无法启动的问题

    问题故障: MySQL数据库意外崩溃,一直无法启动数据库. 报错日志: 启动报错:service mysqld restart ERROR! MySQL server PID file could not be found! Starting MySQL. ERROR! The server quit without updating PID file (/www/wdlinux/mysql/var/iZ2358oz5deZ.pid). 数据库error日志: 200719 22:07:43 I

  • C# 创建MDB数据库、并存放表格数据的案例

    下面是近期学习C#连接MDB数据库,通过路径创建MDB数据库,根据名字创建创建对用MDB数据库中的表格,再通过DataTable创建一致的表并将数据放入,这是一个类,用完之后记得用Close()方法. 添加引用: 目的是//创建Catalog目录类 ADOX.CatalogClass catalog = new ADOX.CatalogClass(); using System; using System.Collections.Generic; using System.Linq; using

  • oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法

    前言 最近因为一位同事误删了某个插件数据库(PDB)的数据文件,结果整个数据库,包括容器数据库(CDB),以及其他插件数据库都用不了了.无奈...通过尝试各种方法最终解决了,觉着有必要将解决的过程分享出来,方法大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 方法如下: 1.用sys账号进入实例,可见容器数据库处于mounted状态:插在上面的所有PDB当然也都是mounted. sqlplus sys/pwd@orcl12c as sysdba; 2.试图打开CDB,提示有数据库文件未能

  • 如何把sqlserver数据迁移到mysql数据库及需要注意事项

    在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL.下面是小编日常整理的一种sqlserver数据库迁移的方法. 一.SQL Server中常用数据类型与MySQL不同的地方 二.将SQL Server数据迁移到MySQL需要注意的一些问题 1.唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个n

  • C#实现Excel表数据导入Sql Server数据库中的方法

    本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法.分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nvarchar类型, tt nvarchar类型 (注意:my_test表中的数据类型必须与Excel中相应字段的类型一致) 2. 我们用SELECT * FROM  OPENROWSET(

  • Android在不使用数据库的情况下存储数据的方法

    本文实例讲述了Android在不使用数据库的情况下存储数据的方法.分享给大家供大家参考.具体分析如下: 在有些情况下我们不需要构建数据库,但是却要将一些数据保存起来,等到程序下次运行时调用,那么我们如何做呢? 1. 引用命名空间 import android.content.SharedPreferences; 2. 定义一个新类PictureGlobalDef,用来存储数据,在该类中定义: public final static String APPSetting = "SettingFile

  • 数据库中经常用到的操作和管理数据库的语句总结第1/2页

    /* --整理者:永恒de影 --整理时间:2010/06/08 --内容:SQL函数的介绍: */ --★★SQL2000查询出各(某)表字段的属性:★★★★★★★★★★★★★★★★★★ SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = a.na

随机推荐