OracleParameter 类

表示 OracleCommand 的参数,还可以表示它到 DataColumn 的映射。无法继承此类。

**命名空间:**System.Data.OracleClient
**程序集:**System.Data.OracleClient(在 system.data.oracleclient.dll 中)

语法

声明
Public NotInheritable Class OracleParameter
    Inherits DbParameter
    Implements ICloneable, IDbDataParameter, IDataParameter
用法
Dim instance As OracleParameter
public sealed class OracleParameter : DbParameter, ICloneable, IDbDataParameter, IDataParameter
public ref class OracleParameter sealed : public DbParameter, ICloneable, IDbDataParameter, IDataParameter
public final class OracleParameter extends DbParameter implements ICloneable, IDbDataParameter, 
    IDataParameter
public final class OracleParameter extends DbParameter implements ICloneable, IDbDataParameter, 
    IDataParameter

备注

参数名不区分大小写。

使用“用于 Oracle 的 Microsoft OLE DB 提供程序”(MSDAORA) 和 ODBC.NET Framework 数据提供程序查询 Oracle 数据库时,使用 LIKE 子句查询固定长度的字段中的值不会返回所有预期的匹配项。原因在于:当 Oracle 在 LIKE 子句中匹配固定长度字段的值时,它会匹配字符串的整个长度,包括任何填充尾随空格。例如,如果 Oracle 数据库中的表包含定义为 char(3) 的名为“Field1”的字段,并且您在该表的某一行中输入了值“a”,则下面的代码将不会返回该行。

Dim queryString As String = "SELECT * FROM Table1 WHERE Field1 LIKE ?"
Dim command As OleDbCommand = New OleDbCommand(queryString, connection)
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a"
Dim reader As OleDbDataReader = command.ExecuteReader()
string queryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OleDbCommand command = new OleDbCommand(queryString, connection);
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OleDbDataReader reader = command.ExecuteReader();

这是因为 Oracle 将该列值存储为“a ”(在“a”后面附加有尾随空格,以达到固定的字段长度 3),这样,当 Oracle 进行固定长度的字段的 LIKE 比较时,就不会将其看作参数值“a”的匹配项。

若要解决此问题,请在参数值后面追加一个百分号 ("%") 通配符(即 "a%"),或改用 SQL = 比较等式。

示例

下面的示例通过 OracleDataAdapter 中的 OracleParameterCollection 创建 OracleParameter 的多个实例。使用这些参数可以从数据库中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSetOracleDataAdapter

Public Sub AddOracleParameters()
    ' ...
    ' create dataSet and adapter
    ' ...
adapter.SelectCommand.Parameters.Add("pEName", OracleType.VarChar, 80).Value = "Smith"
adapter.SelectCommand.Parameters.Add("pEmpNo", OracleType.Int32).Value = 7369
adapter.Fill(dataSet)
End Sub 
public void AddOracleParameters() 
 {
 // ...
 // create dataSet and adapter
 // ...
   adapter.SelectCommand.Parameters.Add("pEName", OracleType.VarChar, 80).Value = "Smith";
   adapter.SelectCommand.Parameters.Add("pEmpNo", OracleType.Int32).Value = 7369;
   adapter.Fill(dataSet);
 }

继承层次结构

System.Object
   System.MarshalByRefObject
     System.Data.Common.DbParameter
      System.Data.OracleClient.OracleParameter

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1

请参见

参考

OracleParameter 成员
System.Data.OracleClient 命名空间