0

我必须使用现有的 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 Driver][DB2] SQL0206N “@ColumnA”在使用它的上下文中无效。SQLSTATE=42703...

使用odbcCommand.Parameters.Add( new OdbcParameter( "ColumnA", Integer ){ Value = 1234 } );而不是表明这已被弃用(并且也不起作用)。我想避免使用连接的 SQL 语句,但我找不到一种方法来让参数化查询对 DB2 数据库起作用。

4

1 回答 1

3

您没有提及您的 DB2 版本。在 DB2 9.7 和更高版本中,有一个驱动程序参数DB2NETNamedParam可以控制这种行为。检查你的db2cli.ini文件。

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

于 2013-08-29T14:46:28.603 回答