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

ASP.NET
赫赫大名的A*寻路算法(vb.net版本)
asp.net(c#)下Jmai去说明 使用与下载
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
asp.net下gridview 批量删除的实现方法
用CSS实现图片倾斜 只支持IE
.net get set用法小结
vs 不显示行号的操作方法
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
ASP.Net不执行问题一解
asp.net 无限分类
让VS2008对JQuery语法的智能感知更完美一点
扩展方法ToJSON() and ParseJSON()
asp.net下PageMethods使用技巧
Linq to SQL Delete时遇到问题的解决方法
实现ASP.NET多文件上传程序代码
ASP.NET AJAX 1.0 RC开发10分钟图解
asp.net get set用法
ASP.NET下使用WScript.Shell执行命令
asp.net2.0实现邮件发送(测试成功)
Asp.net 无限级分类实例代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 170 ::
收藏到网摘: 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。