DB2 V9.7 for Linux, UNIX, and Windows

DB2Parameter 类

表示 DB2Command 的参数以及该参数至 DataColumn 的映射(可选)。

名称空间:
IBM.Data.DB2
组合件:
IBM.Data.DB2(在 IBM.Data.DB2.dll 中)

.NET Framework 2.0、3.0、3.5 和 4.0 继承层次结构

System.Object
   System.MarshalByRefObject
      System.Data.Common.DbParameter
         IBM.Data.DB2.DB2Parameter

.NET Framework 2.0、3.0、3.5 和 4.0 语法

[Visual Basic]
NotInheritable Public Class DB2Parameter
   Inherits DbParameter
   Implements IDbDataParameter, IDataParameter, ICloneable
[C#]
public sealed class DB2Parameter : DbParameter,
   IDbDataParameter, IDataParameter, ICloneable
[C++]
public __gc __sealed class DB2Parameter : public
   DbParameter, IDbDataParameter, IDataParameter, ICloneable
[JScript]
public class DB2Parameter extends DbParameter implements
   IDbDataParameter, IDataParameter, ICloneable

注释

您可将两种类型的值赋给这些参数:
  • 可以赋给 DB2Type 枚举类型的值
  • IBM.Data.DB2Types 名称空间类和结构中的值。

这些参数名称不区分大小写。

示例

[Visual Basic, C#] 以下示例将使用 DB2ParameterCollectionDB2DataAdapter 中创建 DB2Parameter 的多个实例。这些参数用来从数据库中选择数据并将该数据放入 DataSet 中。假定已使用适当的模式、命令和连接创建了 DataSetDB2DataAdapter

[Visual Basic]
Public Sub AddDB2Parameters()
    ' ...
    ' create myDataSet and myDataAdapter
    ' ...
myDataAdapter.SelectCommand.Parameters.Add(
  "CategoryName", DB2Type.VarChar, 80).Value = "toasters"
myDataAdapter.SelectCommand.Parameters.Add(
  "SerialNum", DB2Type.Integer).Value = 239
myDataAdapter.Fill(myDataSet)
End Sub 'AddDB2Parameters

[C#]
public void AddDB2Parameters()
 {
 // ...
 // create myDataSet and myDataAdapter
 // ...
   myDataAdapter.SelectCommand.Parameters.Add(
     "CategoryName", DB2Type.VarChar, 80).Value = "toasters";
   myDataAdapter.SelectCommand.Parameters.Add(
     "SerialNum", DB2Type.Integer).Value = 239;
   myDataAdapter.Fill(myDataSet);
 }

以下示例演示了在 DATE 列中使用字符串文字。可以将类似的方法用于 TIME 和 TIMESTAMP 列。

[Visual Basic]
Public Sub InsertDateDB2Parameters()
    ' ...
    ' create DB2Connection myConn
    ' ...
    Dim myStatement As String = "INSERT INTO myTable (dateCol1, dateCol2, dateCol3) values (?, ?, ?)"
    Dim myCommand As New DB2Command(myStatement, myConnection)
    Dim param1 As New DB2Parameter("dateCol1", DB2Type.Date) ' Date for DATE column dateCol1
    param1.Value = DateTime.Parse("06/23/1982 08:52:43 -5:00")
    Dim param2 As New DB2Parameter("dateCol2", DB2Type.VarChar) 	' VarChar for DATE column dateCol2
    param2.Value = "1982-06-23-8:52:43.000000"
    Dim param3 As New DB2Parameter("dateCol3", "1982-06-23-8:52:43.000000")  ' String for DATE column dateCol3
    myCommand.Parameters.Add(param1))  ' added parameter of type Date
    myCommand.Parameters.Add(param2))  ' added parameter of type VarChar
    myCommand.Parameters.Add(param3))  ' added parameter of type String
    myCommand.ExecuteNonQuery()
End Sub ' InsertDateDB2Parameters

[C#]
public void InsertDateDB2Parameters()
 {
 // ...
 // create DB2Connection myConn
 // ...
   DB2Command myCommand = myConnection.CreateCommand();
   myCommand.CommandText = "INSERT INTO myTable (dateCol1, dateCol2, dateCol3) values (?, ?, ?)";
   DB2Parameter param1 = new DB2Parameter("dateCol1", DB2Type.Date);	// Date for DATE column 'dateCol1'
   param1.Value = DateTime.Parse("06/23/1982 08:52:43 -5:00");
   DB2Parameter param2 = new DB2Parameter("dateCol2", DB2Type.VarChar);	 // VarChar for DATE column 'dateCol2'
   param2.Value = "1982-06-23-8:52:43.000000";
   DB2Parameter param3 = new DB2Parameter("dateCol3", "1982-06-23-8:52:43.000000"); // String for DATE column 'dateCol3';
   myCommand.Parameters.Add(param1));  // added parameter of type Date
   myCommand.Parameters.Add(param2));  // added parameter of type VarChar
   myCommand.Parameters.Add(param3));  // added parameter of type String
   myCommand.ExecuteNonQuery();

假定过程特征符 addEmp 看起来为如下所示:

CREATE PROCEDURE addEMP(

IN empNo INTEGER DEFAULT 100,
IN empName VARCHAR(20) DEFAULT 'nothing',
INOUT empDeptNo	INTEGER DEFAULT 2,
IN empAddr VARCHAR(100)DEFAULT 'San Jose, CA'
) ...    
然后在 CALL 语句中使用命名的自变量及其值调用 addEmp 过程:
CALL addEmp (empNo => 5, empName => 'John', empDeptNo =>
2, empAddr => 'San Jose, CA')

查询局限性

您不能在同一查询中同时使用定位参数标记 (?) 和命名参数标记(例如,: paramEmpAddr)。

线程安全

此类型的公用静态(Visual Basic 中的 Shared)成员对于多线程操作都是安全的。 不保证实例成员均为线程安全。

版本信息

最近一次更新
在 IBM DB2 V9.7 FP2 中对本主题进行了最近一次更新。
.NET Framework 版本
支持版本:2.0、3.0、3.5 和 4.0
IBM 数据服务器客户机
IBM DB2 Linux 版、UNIX 版和 Windows 版版本 8.1.2 或更高版本中支持