我正在使用ODBC连接来检索C#中的数据集。我可以看到完整的命令字符串在创建时被添加到连接中。为什么添加参数时,我的ODBC SelectCommand会被截断
OdbcDataAdapter dataAdapter = new OdbcDataAdapter(GetCommandString(), odbcConnection);
我正在使用以下行将参数添加到命令字符串中。
dataAdapter.SelectCommand.Parameters.Add("@Foo", OdbcType.Decimal).Value = foo2;
然而,使用SQL事件探查时,我可以看到,只有命令字符串的一部分,实际上它对SQL。
在测试过程中,我们已经看到如果我们将一个值硬编码到字符串中并移除上面显示的参数行,则完整字符串将被传入。
使用参数是否限制了我可以传递的字符串的长度?
已编辑 - 添加有关SQL查询的信息:以下是查询在添加参数前的样子的示例。
DECLARE @foo decimal
SET @foo = ?
Select c1,c2,c3,c4 from table1 where id = @foo
Select b1,b2,b3,b4 from table1 where id = @foo
Select a1,a2,a3,a4 from table1 where id = @foo
Select t1,t2,t3,t4 from table1 where id = @foo
这是一个关于代码失败的参数的问题,或者只是不能在SQL Profiler中看到完整的查询文本? – 2010-02-24 17:18:01
您使用ODBC连接连接的数据库类型是什么?正如另一种说法所述,@ foo可能不被允许作为命名参数,因为可能在其他连接(如SQLAdapter)中可用。 – DRapp 2010-05-04 12:22:58