如何使用ODBC将多个命名参数传递给DB2数据库

时间:2013-08-26 09:00:00

标签: db2 odbc parameterized-query

我必须使用现有的ODBC连接查询DB2数据库。执行简单查询按预期工作,但只要我尝试执行参数化查询就不起作用:

SELECT
    ColumnA,
    ColumnB
FROM
    MyTable
WHERE
    ColumnA = ? AND
    ColumnB = ?

在其他帖子中建议使用?,但我总是得到空结果(尽管没有错误消息)。当我尝试使用带有命名参数的标准SQL方法(并将SQL语句更改为ColumnA = @ColumnA AND ColumnB = @ColumnB,如下所示

odbcCommand.Parameters.AddWithValue( ColumnA", 1234 );
odbcCommand.Parameters.AddWithValue( ColumnB", 9999);

显示以下错误消息:

System.Data.Odbc.OdbcException:ERROR [42S22] [IBM] [CLI驱动程序] [DB2] SQL0206N“@ColumnA”在使用它的上下文中无效。 SQLSTATE = 42703 ...

使用odbcCommand.Parameters.Add( new OdbcParameter( "ColumnA", Integer ){ Value = 1234 } );表示不推荐使用此功能(也不起作用)。我想避免使用连接的SQL语句,但我找不到一种方法来获取针对DB2数据库的参数化查询。

1 个答案:

答案 0 :(得分:2)

您没有提到您的DB2版本。在DB2 9.7及更高版本中,有driver parameter DB2NETNamedParam来控制此行为。检查您的db2cli.ini文件。

我怀疑早期版本可能不支持命名参数。