|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。对照|程序 简介
在.NET使用软件开辟职员看来,利用DB2与利用别的任何别的干系数据库没有区分。人们能够看到有数利用SQLServer和甲骨文公司产物实行数据库义务的例子,但关于利用包含.NET在内的微软公司手艺会见DB2数据库的文档就远没有那末多了。
今朝,开辟职员可使用分歧的会见手艺经由过程编程的体例将.NET客户端毗连到DB2上,这些代码从基本下去说是基础不异的,但仍旧存在一些我们必要思索的风趣的限定。
DB2架构慨览
DB2数据库引擎的基础元素是数据库工具、体系目次、目次和设置文件,一切的数据存取都经由过程SQL界面举行。我们能够只将DB2UniveralDatabase(UDB)作为数据库服务器运转,这不请求利用别的的产物,但关于远程的客户端而言,我们还必要别的一些产物。
DB2UDB的服务器组件供应了对利用TCP/IP、SNA或IPX/SPX协定与数据库服务器举行通信的撑持,这就可以够使运转办理客户端、运转工夫库或使用程序开辟客户真个远程客户端举行会见。使用程序开辟客户端组件是面向数据库使用程序开辟职员的工具集,它包含库文件、头文件、API和榜样代码。
我们次要体贴的是可以经由过程收集会见数据库服务器的客户端组件。经由过程利用DB2Connect,我们的.NET使用程序可以会见基于主机的DB2体系,比方DB2forAS/400、DB2forOS/390、DB2forVSE等。
毗连到DB2的体例决意了我们可以完成的义务。有三种手艺能够从.NET毗连到DB2:
1、利用OleDb.NETManagedProvider。假如运转的是DB2V7或更低的版本和COM工具是挪用者时,微软和IBM二家公司都倡议利用OleDb数据供应者会见年夜多半DB2数据。在.NETFramework中,OleDb供应商是经由过程COMInterOp体现出来的,并利用可用于ADO开辟的驱动程序。
2、利用ODBC.NETManagedProvider。这类体例供应了对当地ODBC驱动程序的会见,与OLEDb.NETDataProvider供应对当地OLEDb供应者会见的体例不异。ODBC.NETDataProvider是.NETFramework的一个附加组件,它可以与一切兼容的ODBC驱动程序共同利用。
3、利用IBMDB2.NETProvider(β):这类体例供应了对将ADO.NET毗连到DB2V8.1的撑持。DB2.NETDataProvider是VisualStudio.NETFramework的一个内插式附件,它可以会见在运转在分歧硬件和操纵体系平台上的DB・数据库服务器。今朝,它仍旧处于β测试阶段,但IBM公司很快会公布正式产物。DB2.NetDataProvider可以将利用ADO.NET开辟的使用程序毗连到上面的DB2数据库服务器上:
・运转在Windows、UNIX和Linux平台上的DB2UniversalDatabaseVersion8.1。
・运转在z/OS、OS/390V6.1和利用DB2ConnectV8.1组件的更高版本的操纵体系上的DB2UniversalDatabase。
分歧的毗连字符串显现出分歧情形下的语法不同:
OleDb毗连字符串...
Provider=IBMDADB2.1;UserID=db2admin;Password=db2admin;DataSource=SAMPLE
ODBC毗连字符串...
DSN=DB2V8;UID=db2admin;PWD=db2admin
IBMManagedProvider毗连字符串...
Database=SAMPLE;UserID=db2admin;Password=db2admin;Server=IREK
代码级会见的对照
在开辟DB2数据会见代码时,年夜多半的操纵在很年夜水平上与会见别的数据库不异。上面我们对毗连手艺的一些代码举行对照:
鄙人面的每一个代码片段中,我们将展现一些数据库会见和数据办理的技能,请读者注重每种手艺的哪些步骤不异。我们起首创立毗连工具,再创立一个命令工具。在这个复杂的例子中,我们只会见这一特定命据库表中指定行、列中的一个标量值。最初,我们实行该命令的ExecuteScalar()办法,前往该整数。
利用OleDb手艺...
privateOleDbConnectioncn=newOleDbConnection(connectionString);OleDbCommandcmd=newOleDbCommand("SELECTCOUNT(*)FROMSTAFF",cn);intrc=Convert.ToInt32(cmd.ExecuteScalar());
利用ODBC...
privateOdbcConnectioncn=newOdbcConnection(connectionString);
OdbcCommandcmd=newOdbcCommand("SELECTCOUNT(*)FROMSTAFF",cn);
intrc=Convert.ToInt32(cmd.ExecuteScalar());
利用IBM的ManagedProvider...
privateDB2Connectioncn=newDB2Connection(connectionString);
DB2Commandcmd=newDB2Command("SELECTCOUNT(*)FROMSTAFF",cn);
intrc=Convert.ToInt32(cmd.ExecuteScalar());
功效的对照
依据选择的会见手艺和利用的数据库版本,我们可使用分歧的功效。别的,依据必要完成的事情,我们还必要选择毗连战略。
为了使读者可以更好的选择毗连手艺,我收拾出了一个可以在决议中利用的线路图。在线路图中,我找出了一些关于年夜多半以数据库为中央的软件开辟项目中通用的功效。
鄙人面的图表中,我对本人的心得举行了收拾。我依据是不是同意完成特定的数据库义务对三种会见手艺中的每种都举行了评价,评价的数据库义务有:
・Pass-thruSQL━━这一供应者是不是撑持经由过程静态开辟的SQL语句构成的传送?
・复杂的存储历程━━这一供应者撑持包含前往了局在内的挪用基础的存储历程吗?
・In、Out、InOut参数━━这一供应者撑持挪用存储历程和使用参数传送变量数据吗?
・日期和泉币━━这一供应者撑持由特定厂商供应、大概形成成绩的数据范例吗?
・LOBs━━这一供应者撑持年夜工具数据范例的处置吗?
依据利用的毗连手艺,我们可以完成分歧范例的义务,由于每种供应者都有本人能够完成的事情。有一些成绩是我们值得注重的。
比方,ODBC不撑持DB2的存储历程。因而,假如开辟的使用软件十分依附于存储历程,我们在选择会见手艺时就不克不及思索ODBC,而应该思索OleDb或ManagedProvider。OleDb不撑持LOB数据范例,假如要存取LOB范例的数据(比方JPEG文件),我们可使用ODBC或ManagedProvider。今朝,ManagedProvider不克不及在DB2V7或之前版本上运转,除非在使用程序和基于主机的DB2体系之间运转着DB2ConnectV8。
风趣的是,在利用存储历程的参数时,DB2V7和OleDb有一个十分出名的bug。我们可以从存储过程当中前往数据,但在OleDb+DB2V7平台上,我们不克不及在使用程序与存储历程之间传送参数。
功能对照
为了权衡供应者的功能和向读者供应引导,我们将界说一个无效的测试剧本,并对各类供应者的关健功能举行测试。为了对照各类毗连手艺的功能,我们开辟了一些复杂的Web网页,一个网页面向实行完整不异功效的测试,这将使我们把握剖析分歧毗连手艺情形下输入的把持数据。
假如严厉地从功能的角度来看,我们发明,ManagedProvider在会见DB2数据库时的功能最高。在这一复杂的测试中,有二个主要的数字值得存眷:每秒钟的哀求(RPS)可以使我们感觉到会见的范围,OleDb和ODBC在这方面的体现基础类似,但ManagedProvider的体现要好一些(约莫高10%摆布);收到最初一字节的工夫(TTLB)是从终端用户的角度看到的呼应工夫,在这一方面,ManagedProvider的功能再次比OleDb和ODBC凌驾10%摆布。
最值得注重的是,只管供应的功效分歧,但OleDb和ODBC在有负荷的情形下的功能基础不异。IBM公司的ManagedProvider的功能最好,并且供应了在会见DB2V8时最牢靠的功效。可是,假如没有DB2Connect作两头体,它不撑持DB2V7和更低的版本。
结论
关于使用软件开辟职员而言,利用DB2作后端与利用别的经由过程ADO或ADO.NET会见的干系数据库一样复杂。ADO.NET为我们完成了一切笼统事情。在选择DB2仍是别的数据库时,只管存在架构方面的思索,但作为开辟职员,我们的事情应该是可展望和可办理的。
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 |
|