如何用一个数据库的数据去更新另一个数据库的内容(续)

如何用一个数据库的数据去更新另一个数据库的内容 数据库之间数据交换,是比较费时,也是比较麻烦的,人们在做类似操作的时候,不希望一条一条的去写SQL语句。那么我最近作了一个DEMO,通过使用DataAdapter+Dataset可以方便的完成数据库之间的更新操作。 我的例子是把Access数据库中的数据去更新SQL Server数据库,其中用到数据表的结构一样(这儿只是为了简化操作,并不是必要条件,其实只要两个数据库中数据表的字段要进 阅读详情

上次写了一个简单数据库之间数据交换的程序,但是考虑到如果数据量大的情况,我所使用的DataAdatper+DataSet方法,在性能上就有很大的劣势。不过,要想在数据量大的数据库之间能高效地交换,就需要舍弃原先的方法,而改用DBCommand+DataReader来操作,其实也是很简单的。

 

首先套用我原先例子数据转换模式,即把Access数据库中的数据去更新SQL Server数据库,其中用到数据表结构是一样的(这儿只是为了简化操作,并不是必要条件,其实只要两个数据库中数据表的字段要进行匹配即可,数据表可以是不一样的)。

 

首先,先说说数据表结构,表名为“EmployeeInfo”。

字段名

类型

备注

EmployeeID

Int

自增字段

EmployeeName

Varchar(20)

 

Password

Varchar(20)

 

Desciption

Varchar(255)

 

 

接着,在采用DBCommand+DataReader来进行数据库数据的交换时,由于DataReader每次只读到一条数据,因此要立刻把当前读到的数据去更新另一个数据库。

 

具体代码如下:

    private void btnExchange_Click(object sender, System.EventArgs e)

    {

        OleDbConnection oleDBConn = new OleDbConnection();

        oleDBConn.ConnectionString = yourFirstDBConnection

            + Application.StartupPath + @"/" + ACCESS_FILENAME;

 

        try

        {

            oleDBConn.Open();//Open access db file

        }

        catch( Exception err )

        {

            MessageBox.Show( err.Message );

            return;

        }

 

        string strQuery = "SELECT * FROM EmployeeInfo";

        OleDbCommand myOleComm = new OleDbCommand( strQuery, oleDBConn );

       

        OleDbDataReader myOleReader = null;

        try

        {

            // Get data-reader from db command

            myOleReader = myOleComm.ExecuteReader( CommandBehavior.CloseConnection );

            UpdateWithReader( ref myOleReader );

            myOleReader.Close();

        }

        catch( Exception err )

        {

            MessageBox.Show( err.Message );

            oleDBConn.Close();

            return;

        }

 

 

    }

 

    private void UpdateWithReader( ref OleDbDataReader OleReader )

    {

        // Save data into sql-server using data set

        // Stored procedure named "UpdateEmployee"

        SqlConnection sqlConn = new SqlConnection();

        sqlConn.ConnectionString = yourSecondDBConnection;

 

        try

        {

            sqlConn.Open();//Connect to sql server

        }

        catch( Exception err )

        {

            MessageBox.Show( err.Message );

            return;

        }

 

        // Init update-command

        SqlCommand commUpdate = new SqlCommand( "UpdateEmployee" );

        commUpdate.Connection = sqlConn;

        commUpdate.CommandType = CommandType.StoredProcedure;

 

        // Add command's parameters

        commUpdate.Parameters.Add( "@EmployeeName",

            SqlDbType.VarChar, 20 );

        commUpdate.Parameters.Add( "@Password",

            SqlDbType.VarChar, 20 );

        commUpdate.Parameters.Add( "@Description",

            SqlDbType.VarChar, 255 );

 

        try

        {

            while( OleReader.Read() )

            {

                // Set parameters' value

                commUpdate.Parameters["@EmployeeName"].Value = OleReader["EmployeeName"];

                commUpdate.Parameters["@Password"].Value = OleReader["Password"];

                commUpdate.Parameters["@Description"].Value = OleReader["Description"];

               

                // Execute update-command

                try

                {

                    commUpdate.ExecuteNonQuery();

                }

                catch( SqlException err )

                {

                    MessageBox.Show( err.Message );

                }

            }

 

            commUpdate.Dispose();

            sqlConn.Close();

        }

        catch( Exception err )

        {

            MessageBox.Show( err.Message );

            sqlConn.Close();

            return;

        }

 

    }

 

以上导入到第二数据库的时候,程序是去执行一个存储过程,即我在数据库存储过程中去判断是否要添加一条新的记录还是在原有记录上进行修改,这样可以减少程序中查询判断,那么如果要导入的数据库支持存储过程的话,我建议用此方法来做。

 

存储过程如下:

CREATE  PROCEDURE UpdateEmployee

       @EmployeeName varchar(20),

       @Password varchar(20),

       @Description varchar(255)

AS

 

IF EXISTS( SELECT EmployeeID FROM EmployeeInfo WHERE EmployeeName = @EmployeeName )

BEGIN

       -- Update the previous record in EmployeeRegionInfo table

       UPDATE EmployeeInfo SET Password = @Password, Description = @Description

       WHERE EmployeeName = @EmployeeName

END

ELSE

BEGIN

       -- Insert a new record in EmployeeRegionInfo table

       INSERT INTO EmployeeInfo

       ( EmployeeName, Password, Description )

       VALUES ( @EmployeeName, @Password, @Description )

END

GO

数据库和数据仓库的区别 一、数据仓库的概念数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的... 阅读详情

相关推荐

简述数据库和数据仓库的区别

数据库和数据仓库的区别 简单的来说,数据库偏向于管理和储存,数据仓库偏向于整合和分析 数据库:传统的关系型数据库的应用,主要是基本的、日常的事务处理,更关注业务交易处理(OLTP) 数据仓库:数据仓库支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询效果,更关注数据分析层面(OLAP) 随着业务指数级的增长,数据量陡增,从最初粗放的数据分析逐步演化为角色和场景都非常精细化的集群分析。这类非常具体,且能够对公司决策起到关键性作用的数据,很难从业务数据库中调取出来,主要原因是: 1、业务数据库中的数据结构

m0_47739580的博客 2215

数据库将一张表中的数据更新到另一张表(Oracle、MySQL)

方式一比方式二效率快很多。

codeMonkey_gxy的博客 7911

数据库同步到另一个数据库_定时将数据库A中的表同步到另一个数据库

SyncNavigator v8.6.2 SyncNavigator是一款功能强大的数据库同步软件,适用于SQLSERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。 安装包下载地址:https://www.syncnavigator.cn/Setup.zip 帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm .

weixin_46503877的博客 3072

如何用一个数据库的数据去更新另一个数据库的内容 (转)

       首先套用我原先例子数据转换模式,即把Access数据库中的数据去更新SQL Server数据库,其中用到数据表结构是一样的(这儿只是为了简化操作,并不是必要条件,其实只要两个数据库中数据表的字段要进行匹配即可,数据表可以是不一样的)。首先,先说说数据表结构,表名为“EmployeeInfo”。字段名类型备注EmployeeI

朩冰雲的专栏 1673

数据仓库-数据仓库主要特征

目录2. 数据仓库的主要特征2.1 数据仓库的主要特征2.1 面向主题2.2 集成性2.3 非易失性(不可更新性)2.4 时变性 2. 数据仓库的主要特征 2.1 数据仓库的主要特征 数据仓库是面向主题的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant)数据集合,用以支持管理决策。 2.1 面向主题 传统数...

anniewhite的博客 4829

vscode使用continue插件连接LM studio的模型

本文详细介绍了如何使用VSCode的Continue插件连接LM Studio模型。主要步骤包括:在LM Studio中加载模型并设置相关参数,启动API服务,修改Continue配置文件以集成LM Studio模型,并进行测试以验证连接是否成功。通过这些步骤,用户可以将LM Studio中的预训练模型与VSCode的Continue插件无缝对接,实现高效的自然语言处理和编程辅助功能。

weixin_43590837的博客 8631

把一个数据库中的数据导入到另一个数据库中的方法

方法一: 就是先写一个连数据库连接字符串打开我们想要导出数据的数据库,把这个库中表里的数据取出来,缓存在数据集(dataset或datatable)里,然后在将他们通过另一个连接字符串添加到我们想要导入的数据库中的表里! 也就是说先取然后在存,就好比我现在有100块钱存在工业银行里,现在我想把它存到建设银行里,所以我就得把存在工行里的钱先取出来,然后在存到建行里! 唯一不同的就是,我们在A库

李艳平 1万+

STM32H743玩转以太网:不用FreeRTOS,手把手搞定LAN8742和DHCP(附MPU配置避坑指南)

本文详细介绍了在STM32H743裸机环境下实现以太网通信的完整方案,重点讲解了LAN8742 PHY芯片的配置和DHCP自动获取IP的实现。通过CubeMX配置、内存布局优化和MPU设置,避开了H7系列常见的Cache陷阱,提供了无操作系统环境下的高效网络通信解决方案。

weixin_42709044的博客 201

详解数据仓库和数据库的区别

一、数据仓库 什么是数据仓库? 数据仓库(Data Warehouse),可简写为DW或DWH,数据仓库,是为了企业所有级别的决策制定计划过程,提供所有类型数据类型的战略集合。它出于分析性报告和决策支持的目的而创建。为需要业务智能的企业 ,为需要指导业务流程改进、监视时间,成本,质量以及控制等; 数据仓库能干什么?(举几个栗子) 年度销售目标的制定,需要根据以往的历史报表进行决策,不能随便...

liwenjie001的博客 8万+

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2317

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

数据库课程设计mysql——个人博客数据管理系统

本篇是我大二数据库课程的结课作业,想分享给大家,文中理解有误的地方,请多多指正~ 文章目录需求分析概念结构设计抽象出系统的实体2.2 设计E-R图全局E-R图逻辑结构设计数据库物理设计与实施创建数据库建立和管理基本表建立基本表与管理基本表插入数据建立和管理视图建立视图管理视图访问数据库数据查询数据更新数据库维护备份数据库创建触发器总结与心得 需求分析 随着互联网的发展,越来越多的人拥有了自己的个人博客。但是大多数采用的是网上别人做好的博客模板,众所周知,网上的模板并不是单独为个人而定制,而是面向大多数人

2302_77250325的博客 8742

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级(详解)

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级

qq_36075612的博客 1万+

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含表结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2400

图像标注神器:完全开源免费的多功能标注工具Labelme详解

Labelme是MIT开发的免费开源图像标注工具,支持多边形、矩形等多种标注类型,适用于目标检测、分割等计算机视觉任务。提供Windows可执行文件和Python安装两种方式,可输出JSON格式并转换为COCO等标准数据集。具有跨平台、功能全面、社区活跃等优势,能显著提升标注效率,是AI视觉项目的重要数据准备工具。

数字人生 529

科研——BIBM论文修改和提交

BIBM的相关操作流程汇总

Blackoutdragon的博客 6689

将一个数据库里的表及数据复制到另一个数据库的表里及更新一个表的字段到另一个表里

过程:表点击右按键,编写脚本为,create到,新查询编辑器窗口 --创建表begin USE [tagen_020test] ----更换为新的数据库名字即可 GO /****** Object: Table [dbo].[Park_JparkCodes] Script Date: 2017/11/29 11:44:18 ******/ SET ANSI_NULLS ON ...

飞火龙在天的博客 8242

在SAP系统中,公司间关联交易(Intercompany Transactions)或内部往来主要有三种经典的实现模式。这些模式的选择取决于企业的业务复杂度、自动化需求以及对实时性的要求

SAP系统中公司间关联交易的三种实现模式分析:1)手工记账模式(FB60/FB70)适用于低频交易,灵活性高但易出错;2)SD/MM跨公司销售采购模式(VA01/VF01/ME21N)适用于真实业务流转,业务财务集成度高;3)自动清算模式(F.13/ICR)适合高频交易集团企业,支持实时自动对账。关键成功要素包括正确配置贸易伙伴字段、统驭科目及专用凭证类型。建议根据企业规模、业务复杂度及自动化需求选择合适模式,其中大型集团优先考虑自动对账方案以确保合并报表准确性。

金牌架构师 555

数据库与数据仓库区别

在具体学习数据仓库之前先看一下数据中心的整体构架以及数据流向。 DB 是现有的数据来源,可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。 ETL 是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程: Extract,数据抽取,也就是把数据从数据源读出来。 Transform,数据转换,把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗,清

Listron的专栏 4356

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql 一个字段内容更新到另一个字段

我整理的一些关于【MySQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/yOSbkRMySQL 中字段内容更新到另一个字段的操作 在数据库管理中,数据的管理和维护是极其重要的操作之一。尤其是在使用 MySQL 数据库时,将一个字段的内容更新到另一个字段是非常常见的需求。...

weixin_41281671的博客 506

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Sqlserver用一个表的数据更新另一个表

在Sqlserver的维护更新操作中,有时候涉及到Update操作,其中有一种情况是根据特定的条件,以一个表中的数据更新另一个表的数据,此时涉及到两个表之间的关系以及操作,此处介绍2种更新方法。(1)方法一格式: Update a set a.name=b.name1 FROM tableA a, tableB b where a.id=b.id"在上述格式中,以tableB中的数据字段name1...

weixin_33946605的博客 6036

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据库和数据仓库联系与区别

1、概念 (1)数据库 数据库是存储没有经过任何加工的原始数据的,通过数据库软件实现。数据库有很多表组成,每张表里面又有很多字段,因此能够通过表的二维来表现三维的关系。如:Oracle、MySQL、DB2等。 数据库在IT架构中是必须存在的,因为必须要有地方存数据。就拿微信、微博的账号和密码来说,在后台数据库中肯定会有一个user表,字段起码包括用户名和密码,然后所有的用户数据一行一行存在user表上面,我们登陆的时候,填写用户名和密码就会传回到后台中去与user表上面的数据进行匹配,匹配成功了就登陆上,不

惊鸿91的博客 1万+

更新数据时,是先删除缓存再更新DB,还是先更新DB再删除缓存?

当数据出现变化的时候,DB和redis的一致性就显得非常重要! 结论:并发的情况下,主要是看场景,和代价,进行选择。 目前有两种(基本思路)策略: 1.先删除缓存再更新DB 结论:产生脏数据的概率较大(若出现脏数据,则意味着再不更新的情况下,查询得到的数据均为旧的数据) 比如:两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到...

xin.wang的博客 6633
上一篇: 如何用C#做一个类似于桌面插件的程序
下一篇: 如何把多个文件写入到一个文件中去并能分解
Knight94
博客等级 码龄25年 1013粉丝 87原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值