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

如何使用ODBC将多个命名参数传递到DB2数据库,db2,odbc,parameterized-query,Db2,Odbc,Parameterized Query,我必须使用现有的ODBC连接查询DB2数据库。执行简单查询按预期工作,但只要我尝试执行参数化查询,它就不工作: SELECT ColumnA, ColumnB FROM MyTable WHERE ColumnA = ? AND ColumnB = ? 其他帖子建议使用?,但我总是得到空结果(尽管没有错误消息)。当我尝试使用命名参数的标准SQL方式时(并将SQL语句更改为ColumnA=@ColumnA和ColumnB=@ColumnB),如下所示 od

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

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

odbcCommand.Parameters.AddWithValue( ColumnA", 1234 );
odbcCommand.Parameters.AddWithValue( ColumnB", 9999);
显示以下错误消息:

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


使用
odbcCommand.Parameters.Add(新的OdbcParameter(“ColumnA”,Integer){Value=1234});
表明这是不推荐的(而且也不起作用)。我希望避免使用串联SQL语句,但我找不到一种方法使参数化查询在DB2数据库中工作。

您没有提到您的DB2版本。在DB2 9.7及更高版本中,有一个控制此行为的命令。请检查
db2cli.ini
文件


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

您没有提到您的DB2版本。在DB2 9.7和更高版本中,有一个控制此行为的参数。请检查
db2cli.ini
文件


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

感谢您的建议,我将在回去工作时尝试检查该版本。这确实似乎是一个版本问题,但需要一段时间才能找到并解决。感谢您的建议,我将在回去工作时尝试检查该版本。这确实是一个问题这是一个版本问题,尽管需要一段时间才能找到并解决它。