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::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还包括 、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。 |