当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET访问Oracle数据库的方法

ASP.NET
Asp.net利用JQuery弹出层加载数据代码
asp.net dataview做无限极分类的又一用法
asp.net ckeditor编辑器的使用方法
告别ADO.NET实现应用系统无缝切换的烦恼(总结篇)
asp.net 实现动态显示当前时间(不用javascript不考虑开销)
.net动态显示当前时间(客户端javascript)
asp.net 结合YUI 3.0小示例
asp.net 取消缓存相关问题说明
asp.net 计划任务管理程序实现,多线程任务加载
ASP.NET 跨页面传值方法
asp.net中url地址传送中文参数时的两种解决方案
Asp.net 菜单控件简洁版
asp.net jQuery Ajax用户登录功能的实现
asp.net SharpZipLib的压缩与解压问题
asp.net url重写后页面回传问题
asp.net与Discuz!NT整合集成实例教程
Discuz!NT 3与asp.net 整合的实例教程
测试控制台使用方法
.net 动态标题实现方法
asp.net *.ashx类型的文件使用说明

ASP.NET访问Oracle数据库的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 80 ::
收藏到网摘: n/a

引言

Microsoft.NETFrameworkDataProviderforOracle(以下简称为.NETforOracle)是一个.NETFramework的组件。这个组件为我们使用.NET访问Oracle数据库提供了极大的方便。那些使用.NET和Oracle的开发人员,相信会乐的手舞足蹈,因为他们再也不必使用那个并不十分“专业="的OLEDB来访问Oracle数据库了。这个组件的设计非常类似.NET中内置的Microsoft.NETFrameworkDataProviderforSQLServer和OLEDB。如果读者非常熟悉这两个内置的组件,那么相信您学习这个组件也是轻车熟路的。

本文针对的读者主要是那些考虑使用.NET技术访问Oracle数据库的程序员而编写,需要有一定的C#语言、ADO.NET技术和Oracle数据库基础知识。文中结合ASP.NET技术给出了相关示例以及具体的注释。当然,这并不意味着.NETforOracle组件只能为编写ASP.NET程序提供服务,同样它还可以为使用.NET技术编写的Windows程序提供方便。

本文将简要介绍ASP.NETforOracle的系统需求和安装以及核心类,之后重点详解使用此组件访问Oracle数据库的方法。其中包括.NETforOracle对于各种Oracle数据库中的特殊数据类型的访问、各种核心类使用方法的介绍并且在文章的最后给出了示例等等。


--------------------------------------------------------------------------------

系统需求和安装

在安装.NETforOracle之前,必须首先安装.NETFrameworkversion1.0。同时,还要确定安装了数据访问组件(MDAC2.6及其以上版本,推荐版本是2.7)。既然是要访问Oracle数据库的数据,那么还需要安装Oracle8iRelease3(8.1.7)Client及其以上版本。目前Oracle9i已经发布,作者本人安装的是Oracle9i,本文中所有的程序,都是在Oracle9i数据库环境下编写和调试完成的。

组件的安装非常方便,直接运行oracle_net.msi。在安装过程中无需任何设置,一路点击“NEXT="完成安装即可。默认安装将在C:\ProgramFiles\Microsoft.NET目录下建立一个名为OracleClient.Net的文件夹,其中包含以下六个文件,具体的注释如下表:

注意:Mtxoci8.dll文件并未安装在默认文件夹中,而是安装在系统目录中,例如:c:\Windows\System32目录中。

对于开发人员,其中至关重要的是System.Data.OracleClient.dll文件。这是.NETforOracle组件的核心文件。使用时,开发人员可以通过安装oracle_net.msi来使用.NETforOracle组件,这时系统会将此组件作为一个系统默认的组件来使用,就好像是我们所熟悉的System.Data.SqlClient和System.Data.OleDb组件一样。但是,需要注意的一点是:当开发人员完成了程序之后分发给用户使用时,出于对于软件易用性的考虑,我们是不希望当用户使用此软件之前,还要如同开发人员一样安装oracle_net.msi。这时开发人员可以在发布之前,将System.Data.OracleClient.dll文件复制到软件的bin目录下。这样用户就可无需安装oracle_net.msi而正常的使用软件所提供的功能了。(这种方法限于开发的程序不涉及分布式事务)


--------------------------------------------------------------------------------

核心类介绍

.NETforOracle组件中用于组织类和其他类型的名字空间是System.Data.OracleClient。在此名字空间中,主要包含四个核心类,它们分别是:OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。如果开发人员很了解ADO.NET技术,那么对于这四个类的使用将是耳熟能详的。这些内容非常简单,其具体使用方法几乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一样的。这里就不再详细说明,读者将在后文中通过示例了解使用这些类的有关情况,这里只给出下表以供读者简要了解。

--------------------------------------------------------------------------------

举例说明

下面是一个使用.NETforOracle组件操纵Oracle数据库的例子。在写程序之前,先要在Oracle数据库中建立一个表,并且加入一行数据。使用下面的语句。

建立一个名为OracleTypesTable的表
"createtableOracleTypesTable(MyVarchar2varchar2(3000),MyNumbernumber(28,4)
Primarykey,MyDatedate,MyRawRAW(255))";
插入一行数据
"insertintoOracleTypesTablevalues('test',4,to_date('2000-01-11
12:54:01','yyyy-mm-ddhh24:mi:ss'),'0001020304')";
下面的程序就是要通过.NETforOracle组件来访问Oracle数据库,并且显示出这行数据。在程序中请注意前文中所说明的类,并且联想.NET中关于数据处理类的使用方法。

1.usingSystem;
2.usingSystem.Web;
3.usingSystem.Web.UI;
4.usingSystem.Web.UI.HtmlControls;
5.usingSystem.Web.UI.WebControls;
6.usingSystem.Data;
7.usingSystem.Data.OracleClient;

8.publicclasspic2:Page{
9.publicLabelmessage;
10.publicvoidPage_Load(Objectsender,EventArgse)
11.{
//设置连接字符串
12.stringconnstring="DataSource=eims;user=zbmis;password=zbmis;";
//实例化OracleConnection对象
13.OracleConnectionconn=newOracleConnection(connstring);

14.try
15.{
16.conn.Open();
//实例化OracleCommand对象
17.OracleCommandcmd=conn.CreateCommand();

18.cmd.CommandText="select*fromzbmis.OracleTypesTable";
19.OracleDataReaderoracledatareader1=cmd.ExecuteReader();
//读取数据
20.while(oracledatareader1.Read()){
//读取并显示第一行第一列的数据
21.OracleStringoraclestring1=oracledatareader1.GetOracleString(0);
22.Response.Write("OracleString"+oraclestring1.ToString());

//读取并显示第一行第二列的数据
23.OracleNumberoraclenumber1=oracledatareader1.GetOracleNumber(1);
24.Response.Write("OracleNumber"+oraclenumber1.ToString());

//读取并显示第一行第三列的数据
25.OracleDateTimeoracledatetime1=oracledatareader1.GetOracleDateTime(2);
26.Response.Write("OracleDateTime"+oracledatetime1.ToString());

//读取并显示第一行第四列的数据
27.OracleBinaryoraclebinary1=oracledatareader1.GetOracleBinary(3);
28.if(oraclebinary1.IsNull==false)
29.{
30.foreach(bytebinoraclebinary1.Value)
31.{
32.Response.Write("byte"+b.ToString());
33.}
34.}
35.}
//释放资源
36.oracledatareader1.Close();
37.}
38.catch(Exceptionee)
39.{
//异常处理
40.message.Text=ee.Message;
41.}
42.finally
43.{
//关闭连接
44.conn.Close();
45.}
46.}
47.}
如果您对于.NET中数据操作的内容很熟悉,那么相信上面的程序是完全看得懂的。所以在这里分析上面代码意义不是很大。

请那些既使用.NET又使用Oracle的读者记住:.NETforOracle组件的设计非常类似.NET中内置的DataProviderforSQLServer和OLEDB。