12   1  /  2  页   跳转

ado.net连接Oracle专题

ado.net连接Oracle专题

一、概述

访问Oracle的两种数据提供者lMicrosoft .NET Framework Data Provider for Oracle
Oracle .NET 数据提供程序随 .NET 框架 1.1 一起提供。如果您使用的是 .NET 框架 1.0,您将需要下载 .NET Managed Provider for Oracle。无论是哪个版本,数据提供程序类都位于 System.Data.OracleClient 命名空间中。 lOLEDB l      “Provider=OraOLEDB.1; Data Source=ds; User ID=system; Password=manager”


Microsoft .NET Framework Data Provider for Oracle lMicrosoft .NET Framework Data Provider for Oracle是一个.NET Framework的组件。这个组件为我们使用.NET访问Oracle数据库提供了极大的方便。 l这个组件的设计非常类似.NET中内置的Microsoft .NET Framework Data Provider for SQL Server l添加System.Data.OracleClient.dll引用
b
最后编辑2005-11-16 20:48:19
分享到:
gototop
 

二、核心类介绍
l.NET for Oracle组件中用于组织类和其他类型的名字空间是System.Data.OracleClient。在此名字空间中,主要包含四个核心类,它们分别是:OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。 l可使用 System.Data.OracleClient 命名空间中类的子集来执行 Oracle 存储过程和函数。其具体使用方法几乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一样的。 l添加using System.Data.OracleClient 名称空间
gototop
 

OracleConnection对象


l//设置连接字符串
string connstring="Data Source=eims;user=zbmis;password=zbmis;";
//实例化OracleConnection对象
OracleConnection conn=new OracleConnection(connstring); l打开连接 conn.Open(); l关闭连接conn.Close(); 


示例Oracle表

l建立一个名为OracleTypesTable的表
"create table OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4)
Primary key ,MyDate date,MyRaw RAW(255))";
l插入一行数据
"insert into OracleTypesTable values ('test',4,to_date('2000-01-11
12:54:01','yyyy-mm-dd hh24:mi:ss'),'0001020304')";



OracleCommand对象


l OracleCommand cmd=conn.CreateCommand(); l      或者: l      OracleCommand cmd=new OracleCommand(); l      cmd.Connection=conn; lcmd.CommandText="select * from zbmis.OracleTypesTable";


OracleDataReader


l OracleDataReader oracledatareader1=cmd.ExecuteReader();
//读取数据
while (oracledatareader1.Read()) l      {
  …. l      }



读取字符数据

l//读取并显示第一行第一列的数据
OracleString oraclestring1=oracledatareader1.GetOracleString(0);
Response.Write("OracleString " +oraclestring1.ToString());
gototop
 



读取数字数据

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

读取时间数据

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


读取二进制数据

l//读取并显示第一行第四列的数据
OracleBinary oraclebinary1=oracledatareader1.GetOracleBinary(3);
if(oraclebinary1.IsNull==false)
{
foreach(byte b in oraclebinary1.Value)
    {
        Response.Write("byte " +b.ToString());
    }
}

附件附件:

下载次数:0
文件类型:image/pjpeg
文件大小:
上传时间:2005-6-1 20:41:20
描述:



gototop
 

三、执行Oracle存储过程

l执行 Oracle 存储过程与执行 SQL Server 存储过程类似。 lOracle 存储过程不能将值作为 RETURN 语句的一部分返回,而只能将其作为 OUT 参数返回。 l除了通过 REF CURSOR 输出参数以外,您不能返回结果集。 l您只能使用 RETURN 参数检索 Oracle 函数的返回值  l下面的步骤说明了如何执行 Oracle 存储过程和检索它返回的结果。

1.在 HR 架构中创建一个名为 COUNT_JOB_HISTORY 的存储过程,以计算 JOB_HISTORY 表中的记录数。 l

附件附件:

下载次数:0
文件类型:image/pjpeg
文件大小:
上传时间:2005-6-1 20:44:44
描述:



gototop
 



2.将 System.Data.OracleClient.dll(用于 Oracle 的 Microsoft .NET 框架数据提供程序)的引用添加到项目中。 l


3.使用 using 指令导入 OracleClient 类中的类型。 using System.Data.OracleClient;

4.创建一个 OracleConnection 对象。 OracleConnection conn = new OracleConnection("Data Source=oracledb;    User Id=UserID;Password=Password;");用您的值替换 Oracle 数据库的名称、用户名和密码。

5.创建一个 OracleCommand 对象。将其 Connection 属性设置为第 4 步中创建的连接。将其 CommandText 设置为存储过程的名称,并将其 CommandText 属性设置为 CommandType.StoredProcedure。当您调用第 8 步中介绍的一个 Execute() 方法时,该命令对象将执行指定的存储过程。
OracleCommand cmd = new OracleCommand(); lcmd.Connection = conn; lcmd.CommandText = "COUNT_JOB_HISTORY"; lcmd.CommandType = CommandType.StoredProcedure;


6.创建输入、输出和返回值的 OracleParameter 对象,并将其添加到 OracleCommand 对象的参数集合中。 cmd.Parameters.Add("reccount", OracleType.Number).Direction =    ParameterDirection.Output; l
该行代码是以下两行代码的简写形式: cmd.Parameters.Add("reccount", OracleType.Number); lcmd.Parameters["reccount"].Direction = ParameterDirection.Output;

如果您要检索结果集,请创建 DataSet、DataTable 或 DataReader。在本示例中,我们只是获取第 6 步中创建的输出参数中的计数。


使用 OracleCommand 对象的一个 Execute 方法打开连接并执行存储过程,如下所示

附件附件:

下载次数:0
文件类型:image/pjpeg
文件大小:
上传时间:2005-6-1 20:50:23
描述:



gototop
 



使用完连接后,不要忘记将其关闭。 lconn.Open(); lcmd.ExecuteNonQuery(); lconn.Close(); l如果您要使用 DataAdapter 来填充 DataTable 或 DataSet,可以依靠 DataAdapter 来打开和关闭连接。

9.处理结果。在我们的示例中,可在显示到控制台的输出参数中得到记录数: Console.WriteLine(cmd.Parameters["reccount"].Value);


下面是在本示例中开发的用于执行存储过程和检索结果的代码:

附件附件:

下载次数:0
文件类型:image/pjpeg
文件大小:
上传时间:2005-6-1 20:52:35
描述:



gototop
 

待续—————————————————
gototop
 

好谢谢了
gototop
 

有学了一门数据库,谢谢啊~
gototop
 
12   1  /  2  页   跳转
页面顶部
Powered by Discuz!NT