分享
 
 
 

用.NET新提供的managedprovider来访问Oracle数据

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

微软公司把SQL Server提升为.NET应用程序的数据库,但是,由于Oracle很高的市场占有率,你无疑需要在.NET应用程序中使用Oracle数据。在ADO.NET中,Oracle数据是利用通用的OLE-DB provider来访问的,但是这在性能上落后于SQL Server的管理提供者(managed provider)。微软公司认识到了有必要专门为Oracle提供管理者(provider),因此它发布了.NET Managed Provider For Oracle。 让我们看看如何利用它来访问数据的。

得到你所需要的

在以前,人们常常用“驱动(driver)”这一词来表示让应用程序访问数据库的工具。现在,在.NET下,人们用“管理提供者(managed provider)”来取代“驱动”一词。.NET Managed Provider For Oracle是对.NET的一个附加,它依赖于Oracle客户软件来与Oracle数据库接口。所以,除了拥有.NET提供者之外,你还需要安装Oracle客户软件。

你还需要在Visual Studio .NET中添加对System.Data.OracleClient.dll的引用,为此,你可以在Visual Studio .NET中鼠标右击References列表或者从菜单栏中选择Project | Add Reference。你也许还需要在你的应用程序中正确导入System.Data.OracleClient名字空间。

访问数据

.NET环境的一大优点就是数据库访问代码通常遵循相同的模式而与后端数据库无关。首先,你建立一个连接,然后配置SQL语句或者指令。最后,执行SQL(语句或者命令)并处理结果。

显而易见,用来访问Oracle数据库的代码与用来访问SQL Server的代码不会有很大的区别。这两者的对象名字不同,但是过程是相似的,你可以在清单A中的VB.NET代码中很清楚的看出这一点。

清单A如下:

Listing A: Accessing Oracle data

Dim oracleConnection As New OracleConnection() Dim oracleCommand As New OracleCommand() Dim oracleReader As OracleDataReader Dim sqlString As String

sqlString = "data source=oracle.server;user id=test;password=test" oracleConnection.ConnectionString = oracleConnection.Open() oracleCommand.CommandText = "SELECT * FROM DBTEST.PEOPLE" oracleCommand.Connection = oracleConnection oracleReader = oracleCommand.ExecuteReader

清单A中的代码建立一个连接、创建一个命令对象(该对象用来返回PEOPLE表中所有的行),并用OracleDataReader(它与SqlDataReader和OleDbDataReader对象相似)来读取数据。

如果你用其它.NET环境来处理SQL Server,你会立即注意到你所用到的类的名字与Oracle对应类的名字是相似的。例如,SQL Server连接类命名为SqlConnection,而Oracle连接类命名为OracleConnection。

提防错误

在所有的.NET开发中,你都应该密切监视例外的产生以确保在访问数据时代码执行无误。OracleClient名字空间包括了一个特定于Oracle的例外类,即OracleException,它可以用在标准的try…catch代码块中。清单B给出的代码就利用上述方法来捕获任何例外。清单B给出了一个如何在运行时处理例外的例子。

清单B如下:

Listing B: Exception handling

Dim oracleConnection As New OracleConnection() Dim oracleCommand As New OracleCommand() Dim oracleReader As OracleDataReader Dim sqlString As String sqlString = "data source=oracle.server;user id=test;password=test" Try oracleConnection.ConnectionString = sqlString oracleConnection.Open() oracleCommand.CommandText = "SELECT * FROM DBTEST.PEOPLE" oracleCommand.Connection = oracleConnection oracleReader = oracleCommand.ExecuteReader ' Work with oracle data oracleReader.Close() oracleCommand.Dispose() Catch ex As OracleException 'handle the exception Catch ex As Exception 'handle the exception Finally If Not (oracleConnection Is Nothing) Then oracleConnection.Close() End If End Try

尽管在本文中我用到了OracleDataReader类,但实际上Oracle数据提供者包括了所有标准ADO.NET类(如OracleDataSet和OracleDataAdapter)的各种版本。微软公司推出的.NET Managed Provider For Oracle提供了自由访问Oracle数据的必备工具,其性能远优于对OLE-DB的访问。ADO.NET类的设计对数据库的访问所用的方法相同、对象相似,与数据库类型无关。因此,OLE-DB项目可以很容易转换到Oracle下。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有