2013-08-26 16 views
0

我必須使用現有ODBC連接來查詢DB2數據庫。執行簡單的查詢工作正常,但只要我嘗試執行參數化查詢它不起作用:如何將使用ODBC的多個命名參數傳遞給DB2數據庫

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

使用?建議在其他職位,但我總是空的結果(沒有錯誤信息雖然)。當我試着使用命名參數(和改變SQL語句ColumnA = @ColumnA AND ColumnB = @ColumnB標準SQL的方式如下圖所示

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

你沒有提到你的DB2版本。在DB2 9.7和更高版本中有一個driver parameter DB2NETNamedParam來控制這種行爲。檢查您的db2cli.ini文件。

我懷疑早期版本可能不支持命名參數。

+0

感謝您的建議,我會嘗試在工作時檢查版本。 – Gorgsenegger

+0

它確實似乎是一個版本問題,雖然它需要一段時間來找出並解決它。 – Gorgsenegger

相關問題