OleDbParameter 类

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

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

语法

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

备注

OLE DB.NET Framework 数据提供程序使用标有问号 (?) 的定位参数,而不使用命名参数。

使用“用于 Oracle 的 Microsoft OLE DB 提供程序”(MSDAORA) 和 OLE DB.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 = 比较等式。

示例

下面的示例通过 OleDbDataAdapter 中的 OleDbParameterCollection 集合创建 OleDbParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSetOleDbDataAdapter

Public Function GetDataSetFromAdapter( _
    ByVal dataSet As DataSet, ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter(queryString, connection)

        ' Set the parameters.
        adapter.SelectCommand.Parameters.Add( _
            "@CategoryName", OleDbType.VarChar, 80).Value = "toasters"
        adapter.SelectCommand.Parameters.Add( _
         "@SerialNum", OleDbType.Integer).Value = 239

        ' Open the connection and fill the DataSet.
        Try
            connection.Open()
            adapter.Fill(dataSet)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
        ' The connection is automatically closed when the
        ' code exits the Using block.
    End Using

    Return dataSet
End Function
public DataSet GetDataSetFromAdapter(
    DataSet dataSet, string connectionString, string queryString)
{
    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter =
            new OleDbDataAdapter(queryString, connection);

        // Set the parameters.
        adapter.SelectCommand.Parameters.Add(
            "@CategoryName", OleDbType.VarChar, 80).Value = "toasters";
        adapter.SelectCommand.Parameters.Add(
            "@SerialNum", OleDbType.Integer).Value = 239;

        // Open the connection and fill the DataSet.
        try
        {
            connection.Open();
            adapter.Fill(dataSet);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        // The connection is automatically closed when the
        // code exits the using block.
    }
    return dataSet;
}
using System;
using System.Data;
using System.Data.OleDb;

class Class1
{
    static void Main()
    {
        //        string x = "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind";
    }

    public DataSet GetDataSetFromAdapter(
        DataSet dataSet, string connectionString, string queryString)
    {
        using (OleDbConnection connection =
                   new OleDbConnection(connectionString))
        {
            OleDbDataAdapter adapter =
                new OleDbDataAdapter(queryString, connection);

            // Set the parameters.
            adapter.SelectCommand.Parameters.Add(
                "@CategoryName", OleDbType.VarChar, 80).Value = "toasters";
            adapter.SelectCommand.Parameters.Add(
                "@SerialNum", OleDbType.Integer).Value = 239;

            // Open the connection and fill the DataSet.
            try
            {
                connection.Open();
                adapter.Fill(dataSet);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            // The connection is automatically closed when the
            // code exits the using block.
        }
        return dataSet;
    }

继承层次结构

System.Object
   System.MarshalByRefObject
     System.Data.Common.DbParameter
      System.Data.OleDb.OleDbParameter

线程安全

此类型的任何公共静态(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、1.0

请参见

参考

OleDbParameter 成员
System.Data.OleDb 命名空间

其他资源

使用命令