OracleBulkCopy类说明

来源:互联网 发布:淘宝女装店软文 编辑:程序博客网 时间:2024/06/04 18:03

一个OracleBulkCopy对象有效地从另一个数据源加载或复制数据到Oracle表中。

类继承

System.Object

  System.OracleBulkCopy

宣言

// C#公开封装类OracleBulkCopy:IDisposable 

线程安全

所有公共静态方法都是线程安全的,虽然实例方法不能保证线程安全。

备注

OracleBulkCopy类可用于将数据写入到只有Oracle数据库表。但是,数据源不限于Oracle数据库; 只要可以将数据加载到DataTable实例或用IDataReader实例读取,就可以使用任何数据源

要求

命名空间: Oracle.DataAccess.Client

部件: Oracle.DataAccess.dll

ODP.NET版本:适用于.NET Framework 2.0的ODP.NET或.NET Framework 4的ODP.NET

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy成员

  • OracleBulkCopy构造函数

  • OracleBulkCopy属性

  • OracleBulkCopy公共方法

  • OracleBulkCopy事件


OracleBulkCopy成员

OracleBulkCopy 成员列在下表中。

OracleBulkCopy构造函数

OracleBulkCopy构造函数列在表17-1中

表17-1 OracleBulkCopy构造函数

构造函数描述

OracleBulkCopy构造函数

OracleBulkCopy构造函数创建OracleBulkCopy类的实例


OracleBulkCopy属性

OracleBulkCopy属性列于表17-2

表17-2 OracleBulkCopy属性

属性描述

BATCHSIZE

指定要作为批处理发送到数据库的行数

BulkCopyOptions

指定确定OracleBulkCopyOptions批量复制操作行为枚举值

BulkCopyTimeout

指定批量复制操作在中止之前完成的秒数

ColumnMappings

指定数据源和目标表之间的列映射

连接

指定OracleConnectionOracle数据库用于执行批量复制操作的对象

DestinationTableName

指定加载数据的数据库表

完NotifyAfter

定义生成通知事件之前要处理的行数


OracleBulkCopy公共方法

OracleBulkCopy公共方法列于表17-3

表17-3 OracleBulkCopy公共方法

方法描述

关闭OracleBulkCopy实例

部署

释放对象分配的任何资源或内存

在WriteToServer

将行复制到目标表


OracleBulkCopy事件

OracleBulkCopy事件列于表17-4

表17-4 OracleBulkCopy事件

事件描述

OracleRowsCopied

每次处理由OracleBulkCopy.NotifyAfter属性指定的行数时触发


也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类


OracleBulkCopy构造函数

OracleBulkCopy构造函数创建OracleBulkCopy类的实例。

重载列表:

  • OracleBulkCopy(的OracleConnection)

    此构造OracleBulkCopy函数使用指定的连接和默认值实例化一个新的实例OracleBulkCopyOptions

  • OracleBulkCopy(串)

    此构造函数OracleBulkCopy根据提供的connectionString默认值实例化一个新的实例OracleBulkCopyOptions

  • OracleBulkCopy(OracleConnection,OracleBulkCopyOptions)

    此构造函数实例化OracleBulkCopy使用指定的连接对象和OracleBulkCopyOptions的新实例

  • OracleBulkCopy(string,OracleBulkCopyOptions)

    这个构造函数OracleConnection根据提供的connectionStringOracleBulkCopyOptions值来实例化一个新的实例

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

OracleBulkCopy(的OracleConnection)

该构造OracleBulkCopy函数使用指定的连接和默认OracleBulkCopyOptions枚举值实例化一个新的实例

宣言

// C#公共OracleBulkCopy(OracleConnection 连接);

参数

  • connection

    该打开的实例OracleConnection执行批量复制操作。

例外

ArgumentNullException - 连接参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

传递给此构造函数的连接对象必须是打开的。OracleBulkCopy实例关闭后仍保持打开状态。

此构造函数使用默认枚举值OracleBulkCopyOptions.Default

Connection属性设置为提供的连接。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”

OracleBulkCopy(串)

该构造OracleBulkCopy函数通过首先OracleConnection根据提供对象创建一个对象connectionString,然后OracleBulkCopy使用OracleConnection对象和OracleBulkCopyOptions默认值初始化新对象来实例化一个新的实例

宣言

// C#public OracleBulkCopy(string connectionString);

参数

  • connectionString

    用于连接到Oracle数据库并执行批量复制操作的连接信息。

例外

ArgumentNullExceptionconnectionString参数为null。

ArgumentExceptionconnectionString参数为空。

备注

WriteToServer方法打开连接,如果尚未打开。OracleBulkCopy实例关闭时,连接将自动关闭。

此构造函数使用默认枚举值OracleBulkCopyOptions.Default

Connection属性设置为OracleConnection使用提供初始化对象connectionString

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”

OracleBulkCopy(OracleConnection,OracleBulkCopyOptions)

此构造函数实例化OracleBulkCopy使用指定的连接对象和OracleBulkCopyOptions的新实例

宣言

// C#public OracleBulkCopy(OracleConnection 连接,OracleBulkCopyOptions       copyOptions);

参数

  • connection

    OracleConnection执行批量复制操作对象的打开实例

  • copyOptions

    OracleBulkCopyOptions确定OracleBulkCopy对象行为枚举值的组合

例外

ArgumentNullExceptionconnection参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

传递给此构造函数的连接必须是打开的。OracleBulkCopy实例关闭后仍保持打开状态。

Connection属性设置为提供的连接。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”

OracleBulkCopy(string,OracleBulkCopyOptions)

该构造OracleBulkCopy函数通过首先OracleConnection根据提供对象创建一个对象connectionString,然后OracleBulkCopy使用OracleConnection对象和提供的OracleBulkCopyOptions枚举值初始化新对象来实例化一个新的实例

宣言

// C#public OracleBulkCopy(string connectionString,OracleBulkCopyOptions copyOptions);

参数

  • connectionString

    用于连接到Oracle数据库以进行批量复制操作的连接信息。

  • copyOptions

    OracleBulkCopyOptions确定批量复制操作行为枚举值的组合。

例外

ArgumentNullExceptionconnectionString为空。

ArgumentExceptionconnectionString参数为空。

备注

构造函数使用类的新实例OracleConnection来初始化类的新实例OracleBulkCopyOracleBulkCopy实例,根据在所提供的选项的行为copyOptions参数。

OracleBulkCopy实例关闭时,连接将自动关闭。

Connection属性设置为OracleConnection使用提供初始化对象connectionString

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”


OracleBulkCopy属性

OracleBulkCopy属性列在表17-5中

表17-5 OracleBulkCopy属性

属性描述

BATCHSIZE

指定要作为批处理发送到数据库的行数

BulkCopyOptions

指定确定OracleBulkCopyOptions批量复制操作行为枚举值

BulkCopyTimeout

指定批量复制操作在中止之前完成的秒数

ColumnMappings

指定数据源和目标表之间的列映射

连接

指定OracleConnectionOracle数据库用于执行批量复制操作的对象

DestinationTableName

指定加载数据的数据库表

完NotifyAfter

定义生成通知事件之前要处理的行数


也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

BATCHSIZE

此属性指定要作为批处理发送到数据库的行数。

宣言

// C#public int BatchSize {get; 组;}

物业价值

要作为批次发送到数据库的行数的整数值。

例外

ArgumentOutOfRangeException - 批量大小小于零。

备注

默认值为零,表示行不会批量发送到数据库。整组行都以单个批次发送。

BatchSize处理行数或没有更多行发送到数据库时,批处理完成

  • 如果指定BatchSize > 0UseInternalTransaction批量复制选项,则批量复制操作的每批都将在事务中进行。如果用于执行批量复制操作的连接已经是事务的一部分,InvalidOperationException则会引发异常。

  • 如果没有指定BatchSize > 0UseInternalTransaction选项,则会以批量的大小将行发送到数据库BatchSize,但不会执行与事务相关的操作。

BatchSize属性可以在任何时候进行设置。如果批量拷贝已在进行中,则当前批量大小由先前的批量大小确定。后续批次使用新的批量大小。

如果BatchSize属性最初为零,并且WriteToServer在操作正在进行中更改,则该操作将数据作为单个批次加载。WriteToServer在同一OracleBulkCopy实例上的任何后续操作都使用新的BatchSize

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”

BulkCopyOptions

此属性指定确定OracleBulkCopyOptions批量复制选项行为枚举值。

宣言

// C#public OracleBulkCopyOptions BulkCopyOptions {get; 组;}

物业价值

OracleBulkCopyOptions枚举对象定义批量复制操作的行为。

例外

ArgumentNullException - 批量复制选项集为空。

备注

此属性的默认值为OracleBulkCopyOptions.Default值。此属性可用于更改批量复制操作批次之间的批量复制选项。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “OracleBulkCopyOptions枚举”

BulkCopyTimeout

此属性指定批量复制操作在中止之前完成的秒数。

宣言

// C#public int BulkCopyTimeout {get; 组;}

物业价值

批量复制操作超时之后的秒数的整数值。

例外

ArgumentOutOfRangeException - 超时值设置为小于零。

备注

默认值为30秒。

如果BatchSize>0,以前批次中发送到数据库的行仍然提交。当前批处理的行不会发送到数据库。如果BatchSize=0没有行发送到数据库。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

ColumnMappings

此属性指定数据源和目标表之间的列映射。

宣言

// C#public OracleBulkCopyColumnMappingCollection ColumnMappings {get;}

物业价值

OracleBulkCopyColumnMappingCollection定义源表和目标表之间的列映射对象。

备注

所述ColumnMappings集合是不必要的,如果数据源和目标表具有相同的列数,并且每个源列的顺序位置对应的目标的列的顺序位置相匹配。但是,如果列计数不同或顺序位置不一致,则ColumnMappings必须使用集合来确保将数据复制到正确的列中。

在执行批量复制操作期间,可以访问此集合,但无法更改。

默认情况下,此属性指定列映射的空集合。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

连接

此属性指定OracleConnectionOracle数据库用于执行批量复制操作的对象。

宣言

// C#public OracleConnection Connection {get; }

物业价值

OracleConnection用于批量复制操作对象。

备注

OracleBulkCopy如果OracleBulkCopy对象使用连接字符串进行初始化,则该属性将获取构造的连接

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

DestinationTableName

该属性指定数据加载到的数据库表。

宣言

// C#public string DestinationTableName {get; 组;}

物业价值

用于标识目标表名称的字符串值。

例外

ArgumentNullException - 目标表名称设置为null。

ArgumentException - 目标表名称为空。

备注

如果操作正在运行DestinationTableName时修改WriteToServer,则更改不会影响当前操作。DestinationTableName下一次WriteToServer调用一个方法时会使用

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

完NotifyAfter

此属性定义在生成通知事件之前要处理的行数。

宣言

// C#public int NotifyAfter {get; 组;}

物业价值

一个整数值,指定在通知事件生成之前要处理的行数。

例外

ArgumentOutOfRangeException - 属性值设置为小于零的数字。

备注

此属性的默认值为零,以指定不生成通知事件。

可以在用户界面组件中检索此属性,以显示批量复制操作的进度。NotifyAfter即使在批量复制操作期间,也可以随时设置属性。更改对下一个通知和同一实例上的任何后续操作生效。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员


OracleBulkCopy公共方法

OracleBulkCopy方法见表17-6

表17-6 OracleBulkCopy公共方法

方法描述

关闭OracleBulkCopy实例

部署

释放对象分配的任何资源或内存

在WriteToServer

将行复制到目标表


也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

此方法关闭OracleBulkCopy实例。

宣言

// C#public void Close();

例外

InvalidOperationException- 该Close方法是从一个OracleRowsCopied事件调用的

备注

Close方法调用OracleBulkCopy对象之后,没有其他操作可以成功。调用该WriteToServer方法抛出一个InvalidOperationExceptionClose如果连接被OracleBulkCopy对象打开,则方法将关闭连接,也就是说,如果该OracleBulkCopy对象是由一个连接字符串构造函数创建的。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

部署

此方法释放对象分配的任何资源或内存。

宣言

// C#public void Dispose();

器物

IDisposable

备注

Dispose方法调用该OracleBulkCopy对象之后,没有其他操作可以成功。如果OracleBulkCopy对象打开连接,即连接字符串创建OracleBulkCopy对象的构造函数,连接将关闭

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

在WriteToServer

WriteToServer 将行复制到目标表。

重载列表:

  • 在WriteToServer(的DataRow [])

    此方法将所提供的DataRow数组中的所有行复制到由对象DestinationTableName属性指定的OracleBulkCopy目标表。

  • 在WriteToServer(数据表)

    此方法将所提供的所有行复制DataTable到由对象DestinationTableName属性指定的OracleBulkCopy目标表中。

  • 在WriteToServer(IDataReader的)

    此方法将所提供的所有行复制IDataReader到由对象DestinationTableName属性指定的OracleBulkCopy目标表中。

  • WriteToServer(DataTable,DataRowState)

    此方法复制与提供DataTable给由对象DestinationTableName属性指定的OracleBulkCopy目标表中提供的行状态相匹配的行

  • 在WriteToServer(OracleRefCursor)

    此方法将所有从指定的行复制OracleRefCursor到由对象DestinationTableName属性指定的OracleBulkCopy目标表。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

在WriteToServer(的DataRow [])

此方法将所提供的DataRow数组中的所有行复制到由对象DestinationTableName属性指定的OracleBulkCopy目标表。

宣言

// C#public void WriteToServer(DataRow [] rows);

参数

  • rows

    DataRow要复制到目标表对象数组

例外

ArgumentNullExceptionrows参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

ColumnMappings集合从映射DataRow列到目标数据库表。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

在WriteToServer(数据表)

此方法将所提供的所有行复制DataTable到由对象DestinationTableName属性指定的OracleBulkCopy目标表中。

宣言

// C#public void WriteToServer(DataTable table);

参数

  • table

    DataTable包含要复制到目标表的行。

例外

ArgumentNullExceptiontable参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

所有行都DataTable被复制到目标表,除了那些被删除的行。

ColumnMappings集合从映射DataTable列到目标数据库表。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

在WriteToServer(IDataReader的)

此方法将所提供的所有行复制IDataReader到由对象DestinationTableName属性指定的OracleBulkCopy目标表中。

宣言

// C#public void WriteToServer(IDataReader reader);

参数

  • reader

    包含IDataReader要复制到目标表的行实例。

例外

ArgumentNullExceptionreader参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

批量复制操作从数据读取器的下一个可用行开始。通常,reader通过调用该ExecuteReader方法返回的方法将传递给该WriteToServer方法,以便下一行成为第一行。要复制多个结果集,应用程序必须调用NextResultreader,然后调用WriteToServer再次方法。

WriteToServer方法在内部调用reader.Read以获取源行时更改读取器的状态因此,在结束时WriteToServer操作时,reader是在结果集的末尾。

ColumnMappings集合从数据读取列到目标数据库表映射。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

WriteToServer(DataTable,DataRowState)

此方法复制与提供DataTable给由对象DestinationTableName属性指定的OracleBulkCopy目标表中提供的行状态相匹配的行

宣言

// C#public void WriteToServer(DataTable ,DataRowState rowState);

参数

  • table

    DataTable含有行被复制到目标表。

  • rowState

    DataRowState枚举值。只有匹配行状态的行被复制到目标。

例外

ArgumentNullExceptiontablerowState参数为null。

InvalidOperationException - 连接不处于打开状态。

备注

DataTablerowState参数中指示的并且尚未被删除的状态中的行只被复制到目标表。

ColumnMappings集合从映射DataTable列到目标数据库表。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

在WriteToServer(OracleRefCursor)

此方法将所有从指定的行复制OracleRefCursor到由对象DestinationTableName属性指定的OracleBulkCopy目标表。

宣言

// C#public void WriteToServer(OracleRefCursor refCursor);

参数

  • refCursor

    OracleRefCursor包含要复制到目标表的行对象。

例外

ArgumentNullExceptionrefCursor参数为null

InvalidOperationException - 连接不处于打开状态。

备注

ColumnMappings集合从映射OracleRefCursor列到目标数据库表。

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员


OracleBulkCopy事件

OracleBulkCopy事件列于表17-7

表17-7 OracleBulkCopy事件

事件描述

OracleRowsCopied

每次处理由OracleBulkCopy.NotifyAfter属性指定的行数时触发


也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

OracleRowsCopied

每次处理由OracleBulkCopy.NotifyAfter属性指定的行数时,触发此事件

宣言

// C#公共事件OracleRowsCopiedEventHandler OracleRowsCopied;

例外

InvalidOperationException- 该Close方法在此事件中调用。

备注

NotifyAfter属性指定的行数已被处理时,会引发此事件这并不意味着行已发送到数据库或提交。

要取消此事件的操作,请使用Abort属性OracleRowsCopiedEventArgs

也可以看看:

  • “Oracle.DataAccess.Client命名空间”

  • OracleBulkCopy类

  • OracleBulkCopy成员

  • “NotifyAfter所”

0 0
原创粉丝点击