2010-03-24 79 views
3

我一直在拉我的頭髮,試圖弄清楚我無法獲取參數在我的查詢中工作。我有用VB.NET編寫的代碼嘗試對AS/400執行查詢。我安裝了IBM Access for Windows,並且我能夠使查詢正常工作,而不是使用參數。任何時候我在查詢中包含參數(例如@MyParm)都不起作用。這就像它不會用它應該的值來替換參數。這裏是我的代碼:在.NET中使用OLEDB參數連接到AS400/DB2時

我收到以下錯誤: SQL0206:列@MyParm不是在指定的表

這裏是我的代碼:

Dim da As New OleDbDataAdapter 
Dim dt As New DataTable 

da.SelectCommand = New OleDbCommand 
da.SelectCommand.Connection = con 

da.SelectCommand.CommandText = "SELECT * FROM MyTable WHERE Col1 = @MyParm" 
With da.SelectCommand.Parameters 
    .Add("@MyParm", OleDbType.Integer, 9) 
    .Item("@MyParm").Value = 5 
End With 

' I get the error here of course 
da.Fill(dt) 

我可以用文字的5更換@MyParm和它工作正常。我在這裏錯過了什麼?我一直在用SQL Server來做這件事,但這是我第一次在AS400上嘗試它。

+0

我不得不說這個問題與http://stackoverflow.com/questions/493119/as400-sql-query-with-parameter具有驚人的相似性,但我不熟悉問題域標記爲重複。 – spender 2010-03-24 22:12:18

回答

1

你是對的,與AS400 SQL query with Parameter相同的問題,其中包含解決方案。

+0

我發現使用OLEDB連接我無法使用命名參數。相反,我必須使用問號並將參數添加爲前面帶有@符號的列名稱。如果我想使用命名參數,我必須使用IBM的連接器。 – 2010-03-29 12:36:43

1

請注意:Host Integration Server 2006支持命名參數。