2010-03-24 82 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支持命名参数。