OracleDataAdapter 类  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
OracleDataAdapter has been deprecated. http://go.microsoft.com/fwlink/?LinkID=144260
表示用于填充 DataSet 和更新数据库的一组数据命令和一个数据库连接。 此类不能被继承。
public ref class OracleDataAdapter sealed : System::Data::Common::DbDataAdapter, System::Data::IDbDataAdapterpublic ref class OracleDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneablepublic sealed class OracleDataAdapter : System.Data.Common.DbDataAdapter, System.Data.IDbDataAdapterpublic 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, ICloneabletype OracleDataAdapter = class
    inherit DbDataAdapter
    interface IDbDataAdapter
    interface IDataAdaptertype 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 ICloneablePublic NotInheritable Class OracleDataAdapter
Inherits DbDataAdapter
Implements IDbDataAdapterPublic 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还包括 、SelectCommand、InsertCommandDeleteCommand、 UpdateCommand和 TableMappings 属性,以便于加载和更新数据。
.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 CURSOR 个 DataSet 参数,并使用返回的行填充 。
' 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 执行 Fill 或 FillSchema 操作后, 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 | 
		已过时.
	 获取包含 IContainer 的 Component。(继承自 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 | 
		已过时.
	 获取或设置  | 
| SelectCommand | 
				已过时.
			 获取或设置用于在数据库中选择记录的 SQL 语句或存储过程。 | 
| Site | 
		已过时.
	(继承自 Component) | 
| TableMappings | 
		已过时.
	 获取一个集合,该集合提供源表和 DataTable之间的主映射。(继承自 DataAdapter) | 
| UpdateBatchSize | 
				已过时.
			 获取或设置一个值,该值启用或禁用批处理支持,并且指定可在一次批处理中执行的命令的数量。 | 
| UpdateBatchSize | 
		已过时.
	 获取或设置一个值,该值启用或禁用批处理支持,并且指定可在一次批处理中执行的命令的数量。(继承自 DbDataAdapter) | 
| UpdateCommand | 
				已过时.
			 获取或设置用于在数据库中更新记录的 SQL 语句或存储过程。 | 
方法
事件
| 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。 |