C#、sp#U executesql和不正确的语法

C#、sp#U executesql和不正确的语法,c#,sql-server,sql-server-2005,visual-studio-2005,sql-server-profiler,C#,Sql Server,Sql Server 2005,Visual Studio 2005,Sql Server Profiler,我正在调用下面的代码 在行(IDataReader dr=cmd.ExecuteReader())上,sql barfs在“CompanyUpdate”附近的语法不正确 我查看了sqlprofiler并注意到以下内容: exec sp_executesql N'CompanyUpdate',N'@CompanyID int,@Description varchar(50)',@CompanyID=56,@Description='APC' 它用sp_executesql包装了我的命令。我的所有

我正在调用下面的代码

在行(IDataReader dr=cmd.ExecuteReader())上,sql barfs在“CompanyUpdate”附近的语法不正确

我查看了sqlprofiler并注意到以下内容:

exec sp_executesql N'CompanyUpdate',N'@CompanyID int,@Description varchar(50)',@CompanyID=56,@Description='APC'
它用sp_executesql包装了我的命令。我的所有其他sql命令都是在没有问题的情况下执行的

所以我的问题有两个: 1.为什么要使用sp_executesql? 2.我做错了什么


详细信息:sql2005、c#、vs2005我注意到您没有将CommandType设置为StoredProcedure。。。我不知道这是否是你问题的原因:

cmd.CommandType = CommandType.StoredProcedure;
我自己做过很多次,我都数不清了

下次抛出异常时触发内存的提示:


在运行应用程序时打开SQL查询探查器。当每个命令执行时,它显示在服务器端生成并运行的SQL。如果生成的SQL以
sp_executesql
开头,然后是您的查询,则它将作为常规查询运行,即
cmd.CommandType=CommandType.Text
,如果它以
exec
开头,则很可能作为存储过程运行。请确保为您尝试运行的查询类型生成了正确的SQL。

Argh,谢谢。如果你在SqlCommand中添加参数,而不将其设置为StoredProcedure,那么它到底为什么不会出错呢?因为你也可以参数化查询,所以它不是一个存储过程,以便能够添加参数的要求…+1我只是做了同样愚蠢的事情,忘记设置它。
cmd.CommandType = CommandType.StoredProcedure;