惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - dragonpro

初创公司招聘 程序员 平面设计师 软件销售(成都) 分享一组红白机音乐Remix 初识北京 2008,再会,深圳 顾客想要的和说的不一样 从String到enum的互换(string to enum to string) CommunityServer系列之十一:优秀的URL重写机制 Community Server系列之十:让CS2支持中文搜索 Community Server系列之九:CS2中的用户管理1(MemberRole) Community Server系列之八:CS2中的CSContext Community Server系列之七:快速找到需要修改的文件[技巧] Community Server系列之六:CS2中的关键词及数据结构 Community Server系列之五:CS2中的Ajax原理 Community Server系列之四:Ajax在CS2.0中的应用1 Community Server系列之三:页面间关系2[介绍] Community Server系列之二:页面之间的关系1[介绍] Community Server系列之一:开篇简介 梦里的灵感 使用Enterprise Library DAAB架构灵活的数据提供层
异构数据库转换工具的结构说明
dragonpro · 2006-04-09 · via 博客园 - dragonpro

 前篇工具介绍:http://dragonpro.cnblogs.com/archive/2006/04/09/370415.html

以下先介绍项目里各文件的作用:
1
App.config:主要放置EntLib配置的配置文件

2appsettings.config:主要配置数据库字段类型的对应关系。

3DataConfiguration.config:配置数据库的连接,分为左数据库和右数据库,两者要配置正确程序才可以使用,打开配置后会有相应的说明。

上面这三个配置文件建立在Microsoft Enterprise Library之上,如果不清楚此框架的使用可以参考第一期博客园杂志里面有对Entlib较详细的介绍。

4DataExchange.exe.manifest:使用WinXP中的样式的文件,这可以使程序在运行的时候调用系统样式,当然窗体各控件的FlatStyle属性要为“System”。

5Enums.cs:系统枚举,主要作用是枚举不同类型的数据库。

6Exchange.cs:主要转换类文件,程序主要使用此类转换数据

7ExDatabase.cs:包装DB的类,屏蔽异构数据库,提供操作各类数据库的操作SQL代码。

8FrmMain.cs:系统表示层。

        程序的核心就是Exchange这个类啦,封装了转换逻辑,其中有两个属性,db1db2前者始终代表源数据,后者代表目的数据,而dbldbr则代表左数据库和右数据库,通过赋值dbldb1db2从而自动判断前者是左数据库还是右数据库。

        问题:在导入SQLServer数据库到Oracle的时候,一般采用构建Insert语句的方式进行插入数据,但如果某条数据构建的insert语句长度大于4000Oracle会拒绝执行,这时通过构建存储过程的方式继续导入数据,不会产生数据的丢失,所有过程都有日志记录,当在日志里看到如EEEEEE这样的字符串时表明程序有异常产生则需要留意,不过程序会处理大部分异常,一般不会出现导入不成功的情况。

        前面说了在构建Oracle语句的时候如果超过4000个字符的话,Oracle数据库是会抛出异常的,所以需要改用其他方式,另外还有一个不需要使用存储过程插入数据或Update数据的方式,那就是使用ado.net提供的语句参数的方式比如insert into tablename (column)values(:param),构建好此语句后,然后像调用存储过程一样使用传递参数的方式调用即可,这样代码既好看又不会使语句超长。

        可能大部分朋友对这个小工具不会感兴趣,不过当我们做项目时如果有这方面的需要的话我希望还是能用此软件帮上点忙。