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());
    }
}

附件附件:

您所在的用户组无法下载或查看附件

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

附件附件:

您所在的用户组无法下载或查看附件

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 方法打开连接并执行存储过程,如下所示

附件附件:

您所在的用户组无法下载或查看附件

gototop
 



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

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


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

附件附件:

您所在的用户组无法下载或查看附件

gototop
 

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

好谢谢了
gototop
 

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