OracleDataAdapter 类

定义

注意

OracleDataAdapter has been deprecated. http://go.microsoft.com/fwlink/?LinkID=144260

表示用于填充 DataSet 和更新数据库的一组数据命令和一个数据库连接。 此类不能被继承。

public ref class OracleDataAdapter sealed : System::Data::Common::DbDataAdapter, System::Data::IDbDataAdapter
public ref class OracleDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable
public sealed class OracleDataAdapter : System.Data.Common.DbDataAdapter, System.Data.IDbDataAdapter
public sealed class OracleDataAdapter : System.Data.Common.DbDataAdapter, ICloneable
[System.Obsolete("OracleDataAdapter has been deprecated. http://go.microsoft.com/fwlink/?LinkID=144260", false)]
public sealed class OracleDataAdapter : System.Data.Common.DbDataAdapter, ICloneable
type OracleDataAdapter = class
    inherit DbDataAdapter
    interface IDbDataAdapter
    interface IDataAdapter
type OracleDataAdapter = class
    inherit DbDataAdapter
    interface IDbDataAdapter
    interface IDataAdapter
    interface ICloneable
[<System.Obsolete("OracleDataAdapter has been deprecated. http://go.microsoft.com/fwlink/?LinkID=144260", false)>]
type OracleDataAdapter = class
    inherit DbDataAdapter
    interface IDbDataAdapter
    interface IDataAdapter
    interface ICloneable
Public NotInheritable Class OracleDataAdapter
Inherits DbDataAdapter
Implements IDbDataAdapter
Public NotInheritable Class OracleDataAdapter
Inherits DbDataAdapter
Implements ICloneable
继承
属性
实现

注解

此类型已弃用,并将在.NET Framework的未来版本中删除。 有关详细信息,请参阅 Oracle 和 ADO.NET

OracleDataAdapter充当数据集和数据库之间的桥梁,用于检索和保存数据。 OracleDataAdapter提供了此桥,方法是使用 Fill 将数据从数据库加载到 中DataSet,并使用 Update 将中DataSet所做的更改发送回数据源。

OracleDataAdapter当 填充 时DataSet,它会为返回的数据创建必要的表和列(如果它们尚不存在)。 但是,除非 将 属性设置为 AddWithKey,否则MissingSchemaAction隐式创建的架构中不包含主键信息。 在使用 填充数据FillSchema之前,还可以OracleDataAdapter创建 的DataSet架构,包括主键信息。 有关详细信息,请参阅 向数据集添加现有约束

注意

默认情况下,使用 Fill 导入到 的数字DataTable字段将映射到 OracleNumber 对象。 通过导入一个对于 精度 OracleNumber限制来说太大或太高的 OracleNumber非整型数值,可以溢出 并引发 Oracle 异常。 有关详细信息,请参阅 的说明 OracleNumber

OracleDataAdapter还包括 、SelectCommandInsertCommandDeleteCommandUpdateCommandTableMappings 属性,以便于加载和更新数据。

.NET Framework Oracle 数据提供程序不支持批处理 SQL 语句。 但是,它允许使用多个 REF CURSOR 输出参数来填充 数据集,每个参数都在自己的 DataTable中。 必须定义参数,将其标记为输出参数,并指示它们是 REF CURSOR 数据类型。 请注意,使用存储过程返回的参数填充 时OracleDataAdapter,不能使用 UpdateREF CURSOR 方法,因为在执行 SQL 语句时,Oracle 不提供确定表名和列名所需的信息。 以下 C# 示例假定已创建此存储过程。

在 Oracle 服务器上创建以下 Oracle 包。

CREATE OR REPLACE PACKAGE CURSPKG AS   
   TYPE T_CURSOR IS REF CURSOR;   
   PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
      IO_CURSOR OUT T_CURSOR);   
   PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
      DEPTCURSOR OUT T_CURSOR);  
END CURSPKG;  
/  

在 Oracle 服务器上创建下面的 Oracle 包正文。

CREATE OR REPLACE PACKAGE BODY CURSPKG AS   
    PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
                               IO_CURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR T_CURSOR;   
    BEGIN   
        IF N_EMPNO <> 0 THEN   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO   
                        AND EMP.EMPNO = N_EMPNO;   
        ELSE   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO;   
        END IF;   
        IO_CURSOR := V_CURSOR;   
    END OPEN_ONE_CURSOR;   
    PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
                                DEPTCURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR1 T_CURSOR;   
        V_CURSOR2 T_CURSOR;   
    BEGIN   
        OPEN V_CURSOR1 FOR SELECT * FROM EMP;   
        OPEN V_CURSOR2 FOR SELECT * FROM DEPT;   
        EMPCURSOR  := V_CURSOR1;   
        DEPTCURSOR := V_CURSOR2;   
    END OPEN_TWO_CURSORS;   
END CURSPKG;  
 /  

以下 C# 示例演示如何使用 存储过程获取表和列信息。

// GetConnectionString() returns a connection string for  
// the data source.  

string connString = GetConnectionString();  
DataSet ds = new DataSet();  
OracleConnection conn = new OracleConnection(connString);  
OracleCommand cmd = conn.CreateCommand();  

cmd.CommandText = "CURSPKG.OPEN_TWO_CURSORS";  
cmd.CommandType = CommandType.StoredProcedure;  
cmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction =   
       ParameterDirection.Output;  
cmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction =   
       ParameterDirection.Output;  

OracleDataAdapter da = new OracleDataAdapter(cmd);  
da.TableMappings.Add("Table", "Emp");  
da.TableMappings.Add("Table1", "Dept");  
da.Fill(ds);  

ds.Relations.Add("EmpDept", ds.Tables["Dept"].Columns["Deptno"],   
      ds.Tables["Emp"].Columns["Deptno"], false);  

以下 Visual Basic 示例演示如何使用 OracleDataAdapter 通过 Oracle REF CURSOR填充 DataSet 。 这些示例使用 Oracle Scott/Tiger 架构中定义的表,并需要以下 PL/SQL 包和包正文。 必须在服务器上创建这些示例才能使用示例。

在 Oracle 服务器上创建以下 Oracle 包。

CREATE OR REPLACE PACKAGE CURSPKG AS   
   TYPE T_CURSOR IS REF CURSOR;   
   PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
      IO_CURSOR OUT T_CURSOR);   
   PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
      DEPTCURSOR OUT T_CURSOR);  
END CURSPKG;  
/  

在 Oracle 服务器上创建下面的 Oracle 包正文。

CREATE OR REPLACE PACKAGE BODY CURSPKG AS   
    PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
                               IO_CURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR T_CURSOR;   
    BEGIN   
        IF N_EMPNO <> 0 THEN   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO   
                        AND EMP.EMPNO = N_EMPNO;   
        ELSE   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO;   
        END IF;   
        IO_CURSOR := V_CURSOR;   
    END OPEN_ONE_CURSOR;   
    PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
                                DEPTCURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR1 T_CURSOR;   
        V_CURSOR2 T_CURSOR;   
    BEGIN   
        OPEN V_CURSOR1 FOR SELECT * FROM EMP;   
        OPEN V_CURSOR2 FOR SELECT * FROM DEPT;   
        EMPCURSOR  := V_CURSOR1;   
        DEPTCURSOR := V_CURSOR2;   
    END OPEN_TWO_CURSORS;   
END CURSPKG;  
 /  

此 Visual Basic 示例执行一个 PL/SQL 存储过程,该存储过程返回两 REF CURSORDataSet 参数,并使用返回的行填充 。

' GetConnectionString() returns a connection string for  
' the data source.  

    Dim connString As New String(GetConnectionString())  
    Dim ds As New DataSet()  
    Dim conn As New OracleConnection(connString)  
    Dim cmd As OracleCommand = conn.CreateCommand()  

    cmd.CommandText = "CURSPKG.OPEN_TWO_CURSORS"  
    cmd.CommandType = CommandType.StoredProcedure  
    cmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = _  
       ParameterDirection.Output  
    cmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = _  
       ParameterDirection.Output  

    Dim da As New OracleDataAdapter(cmd)  
    da.TableMappings.Add("Table", "Emp")  
    da.TableMappings.Add("Table1", "Dept")  
    da.Fill(ds)  

    ds.Relations.Add("EmpDept", ds.Tables("Dept").Columns("Deptno"), _  
      ds.Tables("Emp").Columns("Deptno"), False)  

使用 OracleDataAdapter 执行 FillFillSchema 操作后, DataColumn.ReadOnly 属性始终返回 false,无论列是否可以更新,因为 Oracle 服务器不返回此信息。

构造函数

OracleDataAdapter()
已过时.

初始化 OracleDataAdapter 类的新实例。

OracleDataAdapter(OracleCommand)
已过时.

用指定的 SQL SELECT 语句初始化 OracleDataAdapter 类的新实例。

OracleDataAdapter(String, OracleConnection)
已过时.

用一个 SQL SELECT 语句和一个 OracleDataAdapter 初始化 OracleConnection 类的新实例。

OracleDataAdapter(String, String)
已过时.

使用 SQL SELECT 语句和连接字符串初始化 OracleDataAdapter 类的新实例。

字段

DefaultSourceTableName
已过时.

DataAdapter 对象用于表映射的默认名称。

(继承自 DbDataAdapter)

属性

AcceptChangesDuringFill
已过时.

获取或设置一个值,该值指示在任何 Fill 操作过程中,在将 AcceptChanges() 添加到 DataRow 之后是否在 DataTable 上调用它。

(继承自 DataAdapter)
AcceptChangesDuringUpdate
已过时.

获取或设置在 AcceptChanges() 期间是否调用 Update(DataSet)

(继承自 DataAdapter)
CanRaiseEvents
已过时.

获取一个指示组件是否可以引发事件的值。

(继承自 Component)
Container
已过时.

获取包含 IContainerComponent

(继承自 Component)
ContinueUpdateOnError
已过时.

获取或设置一个值,该值指定在行更新过程中遇到错误时是否生成异常。

(继承自 DataAdapter)
DeleteCommand
已过时.

获取或设置用于在数据库中删除记录的 SQL 语句或存储过程。

DesignMode
已过时.

获取一个值,用以指示 Component 当前是否处于设计模式。

(继承自 Component)
Events
已过时.

获取附加到此 Component 的事件处理程序的列表。

(继承自 Component)
FillCommandBehavior
已过时.

获取或设置用于填充数据适配器的命令的行为。

(继承自 DbDataAdapter)
FillLoadOption
已过时.

获取或设置 LoadOption,后者确定适配器如何从 DataTable 中填充 DbDataReader

(继承自 DataAdapter)
InsertCommand
已过时.

获取或设置用于将新记录插入到数据库中的 SQL 语句或存储过程。

MissingMappingAction
已过时.

确定传入数据没有匹配的表或列时需要执行的操作。

(继承自 DataAdapter)
MissingSchemaAction
已过时.

确定现有 DataSet 架构与传入数据不匹配时需要执行的操作。

(继承自 DataAdapter)
ReturnProviderSpecificTypes
已过时.

获取或设置 Fill 方法是应当返回提供程序特定的值,还是返回公用的符合 CLS 的值。

(继承自 DataAdapter)
SelectCommand
已过时.

获取或设置用于在数据库中选择记录的 SQL 语句或存储过程。

Site
已过时.

获取或设置 ComponentISite

(继承自 Component)
TableMappings
已过时.

获取一个集合,该集合提供源表和 DataTable之间的主映射。

(继承自 DataAdapter)
UpdateBatchSize
已过时.

获取或设置一个值,该值启用或禁用批处理支持,并且指定可在一次批处理中执行的命令的数量。

UpdateBatchSize
已过时.

获取或设置一个值,该值启用或禁用批处理支持,并且指定可在一次批处理中执行的命令的数量。

(继承自 DbDataAdapter)
UpdateCommand
已过时.

获取或设置用于在数据库中更新记录的 SQL 语句或存储过程。

方法

AddToBatch(IDbCommand)
已过时.

向当前批处理添加 IDbCommand

(继承自 DbDataAdapter)
ClearBatch()
已过时.

从批处理中移除所有 IDbCommand 对象。

(继承自 DbDataAdapter)
CloneInternals()
已过时.
已过时.
已过时.
已过时.

创建此 DataAdapter 实例的一个副本。

(继承自 DataAdapter)
CreateObjRef(Type)
已过时.

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
CreateRowUpdatedEvent(DataRow, IDbCommand, StatementType, DataTableMapping)
已过时.

初始化 RowUpdatedEventArgs 类的新实例。

(继承自 DbDataAdapter)
CreateRowUpdatingEvent(DataRow, IDbCommand, StatementType, DataTableMapping)
已过时.

初始化 RowUpdatingEventArgs 类的新实例。

(继承自 DbDataAdapter)
CreateTableMappings()
已过时.

创建一个新的 DataTableMappingCollection

(继承自 DataAdapter)
Dispose()
已过时.

释放由 Component 使用的所有资源。

(继承自 Component)
Dispose(Boolean)
已过时.

释放由 DbDataAdapter 占用的非托管资源,还可以另外再释放托管资源。

(继承自 DbDataAdapter)
Equals(Object)
已过时.

确定指定对象是否等于当前对象。

(继承自 Object)
ExecuteBatch()
已过时.

执行当前批处理。

(继承自 DbDataAdapter)
Fill(DataSet)
已过时.

DataSet 中添加或刷新行。

(继承自 DbDataAdapter)
Fill(DataSet, Int32, Int32, String)
已过时.

DataSet 的指定范围中添加或刷新行以匹配使用 DataSetDataTable 名称的数据源中的行。

(继承自 DbDataAdapter)
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)
已过时.

使用 DataSet 和源表名称、命令字符串以及命令行为,在 DataSet 的指定范围中添加或刷新某些行以使它们与数据源中对应的行相一致。

(继承自 DbDataAdapter)
Fill(DataSet, String)
已过时.

DataSet 中添加或刷新行以匹配使用 DataSetDataTable 名称的数据源中的行。

(继承自 DbDataAdapter)
Fill(DataSet, String, IDataReader, Int32, Int32)
已过时.

DataSet 的指定范围中添加或刷新行以与使用 DataSetDataTableIDataReader 名称的数据源中的行进行匹配。

(继承自 DbDataAdapter)
Fill(DataTable)
已过时.

DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。

(继承自 DbDataAdapter)
Fill(DataTable, IDataReader)
已过时.

DataTable 中添加或刷新行,以与使用指定的 DataTableIDataReader 名称的数据源中的行匹配。

(继承自 DbDataAdapter)
Fill(DataTable, IDbCommand, CommandBehavior)
已过时.

DataTable 中添加或刷新行,以与使用指定的 DataTableIDbCommandCommandBehavior 的数据源中的行匹配。

(继承自 DbDataAdapter)
Fill(DataTable[], IDataReader, Int32, Int32)
已过时.

DataTable 对象集合的指定范围中添加或刷新行以与数据源中的行匹配。

(继承自 DataAdapter)
Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)
已过时.

DataSet 的指定范围中添加或刷新行以匹配使用 DataSetDataTable 名称的数据源中的行。

(继承自 DbDataAdapter)
Fill(Int32, Int32, DataTable[])
已过时.

添加或刷新一个或多个 DataTable 对象中的行,以匹配数据源中的行,从指定记录开始并检索最多指定的最大记录数。

(继承自 DbDataAdapter)
FillSchema(DataSet, SchemaType)
已过时.

将名为“Table”的 DataTable 添加到指定的 DataSet,并根据指定的 SchemaType 配置架构以匹配数据源中的架构。

(继承自 DbDataAdapter)
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)
已过时.

DataTable 添加到指定的 DataSet ,并根据指定的 SchemaType配置架构以匹配数据源中的架构。

(继承自 DbDataAdapter)
FillSchema(DataSet, SchemaType, String)
已过时.

DataTable 添加到指定的 DataSet 中,并根据指定的 SchemaTypeDataTable 配置架构以匹配数据源中的架构。

(继承自 DbDataAdapter)
FillSchema(DataSet, SchemaType, String, IDataReader)
已过时.

向指定的 DataTable 添加一个 DataSet

(继承自 DataAdapter)
FillSchema(DataTable, SchemaType)
已过时.

根据指定的 SchemaType 配置指定 DataTable 的架构。

(继承自 DbDataAdapter)
FillSchema(DataTable, SchemaType, IDataReader)
已过时.

向指定的 DataTable 添加一个 DataSet

(继承自 DataAdapter)
FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)
已过时.

根据指定的 DataTable、命令字符串以及 SchemaType 值配置指定 CommandBehavior 的架构。

(继承自 DbDataAdapter)
GetBatchedParameter(Int32, Int32)
已过时.

从当前批处理中的其中一个命令返回一个 IDataParameter

(继承自 DbDataAdapter)
GetBatchedRecordsAffected(Int32, Int32, Exception)
已过时.

返回与较大的批处理更新内的单次更新尝试有关的信息。

(继承自 DbDataAdapter)
GetFillParameters()
已过时.

获取当执行 SQL SELECT 语句时由用户设置的参数。

(继承自 DbDataAdapter)
GetHashCode()
已过时.

作为默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetService(Type)
已过时.

返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。

(继承自 Component)
GetType()
已过时.

获取当前实例的 Type

(继承自 Object)
HasTableMappings()
已过时.

指示是否已创建了一个 DataTableMappingCollection

(继承自 DataAdapter)
InitializeBatching()
已过时.

初始化 DbDataAdapter 的批处理。

(继承自 DbDataAdapter)
InitializeLifetimeService()
已过时.

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()
已过时.

创建当前 Object 的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)
已过时.

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
OnFillError(FillErrorEventArgs)
已过时.

引发 FillError 事件。

(继承自 DbDataAdapter)
OnRowUpdated(RowUpdatedEventArgs)
已过时.

引发 .NET 数据提供程序的 RowUpdated 事件。

(继承自 DbDataAdapter)
OnRowUpdating(RowUpdatingEventArgs)
已过时.

引发 .NET 数据提供程序的 RowUpdating 事件。

(继承自 DbDataAdapter)
ResetFillLoadOption()
已过时.

FillLoadOption 重置为默认状态,并使 Fill(DataSet) 接受 AcceptChangesDuringFill

(继承自 DataAdapter)
ShouldSerializeAcceptChangesDuringFill()
已过时.

确定是否应保持 AcceptChangesDuringFill 属性。

(继承自 DataAdapter)
ShouldSerializeFillLoadOption()
已过时.

确定是否应保持 FillLoadOption 属性。

(继承自 DataAdapter)
ShouldSerializeTableMappings()
已过时.

确定一个或多个 DataTableMapping 对象是否存在,并且它们是否应该是持久的。

(继承自 DataAdapter)
TerminateBatching()
已过时.

结束 DbDataAdapter 的批处理。

(继承自 DbDataAdapter)
ToString()
已过时.

返回包含 Component 的名称的 String(如果有)。 不应重写此方法。

(继承自 Component)
Update(DataRow[])
已过时.

通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值。

(继承自 DbDataAdapter)
Update(DataRow[], DataTableMapping)
已过时.

通过为指定的 DataRow 对象数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值。

(继承自 DbDataAdapter)
Update(DataSet)
已过时.

通过为指定的 DataSet 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值。

(继承自 DbDataAdapter)
Update(DataSet, String)
已过时.

通过为具有指定名称 DataSetDataTable 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值。

(继承自 DbDataAdapter)
Update(DataTable)
已过时.

通过为指定的 DataTable 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值。

(继承自 DbDataAdapter)

事件

Disposed
已过时.

在通过调用 Dispose() 方法释放组件时发生。

(继承自 Component)
FillError
已过时.

在填充操作过程中出现错误时返回。

(继承自 DbDataAdapter)
RowUpdated
已过时.

在对数据库执行命令后的更新操作过程中发生。

RowUpdating
已过时.

在对数据源执行命令前的 Update(DataSet) 过程中发生。

显式接口实现

ICloneable.Clone()
已过时.

有关此成员的说明,请参见 Clone()

ICloneable.Clone()
已过时.

创建作为当前实例副本的新对象。

(继承自 DbDataAdapter)
IDataAdapter.TableMappings
已过时.

获取一个集合,该集合指示如何将源表映射到数据集表。

(继承自 DataAdapter)
IDbDataAdapter.DeleteCommand
已过时.

有关此成员的说明,请参见 DeleteCommand

IDbDataAdapter.InsertCommand
已过时.

有关此成员的说明,请参见 InsertCommand

IDbDataAdapter.SelectCommand
已过时.

有关此成员的说明,请参见 SelectCommand

IDbDataAdapter.UpdateCommand
已过时.

有关此成员的说明,请参见 UpdateCommand

适用于

另请参阅