透明 发表于 2015-1-16 22:36:47

ASP.NET编程:.Net开辟DB2数据库相干使用程序对照

我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。对照|程序|数据|数据库<Pstyle="TEXT-INDENT:2em">简介  在.NET使用软件开辟职员看来,利用DB2与利用别的任何别的干系数据库没有区分。人们能够看到有数利用SQLServer和甲骨文公司产物实行数据库义务的例子,但关于利用包含.NET在内的微软公司手艺会见DB2数据库的文档就远没有那末多了。
  今朝,开辟职员可使用分歧的会见手艺经由过程编程的体例将.NET客户端毗连到DB2上,这些代码从基本下去说是基础不异的,但仍旧存在一些我们必要思索的风趣的限定。
  DB2架构慨览
  DB2数据库引擎的基础元素是数据库工具、体系目次、目次和设置文件,一切的数据存取都经由过程SQL界面举行。我们能够只将DB2UniveralDatabase(UDB)作为数据库服务器运转,这不请求利用别的的产物,但关于远程的客户端而言,我们还必要别的一些产物。



(图pict01)
  毗连到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
  BMManagedProvider毗连字符串: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());
功效的对照</STRONG>
  依据选择的会见手艺和利用的数据库版本,我们可使用分歧的功效。别的,依据必要完成的事情,我们还必要选择毗连战略。
  为了使读者可以更好的选择毗连手艺,我收拾出了一个可以在决议中利用的线路图。在线路图中,我找出了一些关于年夜多半以数据库为中央的软件开辟项目中通用的功效。
  鄙人面的图表中,我对本人的心得举行了收拾。我依据是不是同意完成特定的数据库义务对三种会见手艺中的每种都举行了评价,评价的数据库义务有:
  •Pass-thruSQL━━这一供应者是不是撑持经由过程静态开辟的SQL语句构成的传送?
  •复杂的存储历程━━这一供应者撑持包含前往了局在内的挪用基础的存储历程吗?
  •In、Out、InOut参数━━这一供应者撑持挪用存储历程和使用参数传送变量数据吗?
  •日期和泉币━━这一供应者撑持由特定厂商供应、大概形成成绩的数据范例吗?
  •LOBs━━这一供应者撑持年夜工具数据范例的处置吗?



(图pict02)
依据利用的毗连手艺,我们可以完成分歧范例的义务,由于每种供应者都有本人能够完成的事情。有一些成绩是我们值得注重的。
  比方,ODBC不撑持DB2的存储历程。因而,假如开辟的使用软件十分依附于存储历程,我们在选择会见手艺时就不克不及思索ODBC,而应该思索OleDb或ManagedProvider。OleDb不撑持LOB数据范例,假如要存取LOB范例的数据(比方JPEG文件),我们可使用ODBC或ManagedProvider。今朝,ManagedProvider不克不及在DB2V7或之前版本上运转,除非在使用程序和基于主机的DB2体系之间运转着DB2ConnectV8。
  风趣的是,在利用存储历程的参数时,DB2V7和OleDb有一个十分出名的bug。我们可以从存储过程当中前往数据,但在OleDb+DB2V7平台上,我们不克不及在使用程序与存储历程之间传送参数。

  功能对照
  为了权衡供应者的功能和向读者供应引导,我们将界说一个无效的测试剧本,并对各类供应者的关健功能举行测试。为了对照各类毗连手艺的功能,我们开辟了一些复杂的Web网页,一个网页面向实行完整不异功效的测试,这将使我们把握剖析分歧毗连手艺情形下输入的把持数据。





(图pict03)
  假如严厉地从功能的角度来看,我们发明,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仍是别的数据库时,只管存在架构方面的思索,但作为开辟职员,我们的事情应该是可展望和可办理的。
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。

冷月葬花魂 发表于 2015-1-19 18:35:49

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

老尸 发表于 2015-1-24 18:42:09

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

再现理想 发表于 2015-2-2 11:50:28

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

不帅 发表于 2015-2-7 19:33:47

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

仓酷云 发表于 2015-2-23 08:30:57

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

再见西城 发表于 2015-3-7 06:21:49

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。

灵魂腐蚀 发表于 2015-3-14 14:14:35

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

活着的死人 发表于 2015-3-21 09:37:49

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页: [1]
查看完整版本: ASP.NET编程:.Net开辟DB2数据库相干使用程序对照