我必须使用现有的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数据库的参数化查询。
答案 0 :(得分:2)
您没有提到您的DB2版本。在DB2 9.7及更高版本中,有driver parameter DB2NETNamedParam
来控制此行为。检查您的db2cli.ini
文件。
我怀疑早期版本可能不支持命名参数。