这个自动生成的t-sql查询有什么问题?

时间:2009-10-15 20:49:56

标签: .net tsql datatable

我在执行存储过程时遇到问题...

我有C#代码试图调用存储过程。看起来有点像这样:

DataTable myDataTable = new DataTable();
using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    SqlCommand selectCommand = new SqlCommand("MyStoredProc", connection);
    selectCommand.Parameters.Add(new SqlParameter("@myGuid", myGuid));
    SqlDataAdapter da = new SqlDataAdapter(selectCommand);
    da.Fill(myDataTable);
}

当我执行它时,出现“MyStoredProc'附近的语法不正确”的错误。

如果我运行SqlProfiler,我发现它正在尝试像这样运行我的存储过程:

exec sp_executesql 
N'MyStoredProc',
N'@myGuid uniqueidentifier',
@myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'

果然,如果我尝试做同样的事情,我会得到同样的错误。所以我的问题是:

  1. 生成的查询有什么问题?
  2. 为什么C#生成无效查询?我在C#代码中做错了什么?
  3. 编辑: Agent_9191钉它......我愚蠢地省略了将selectCommand类型设置为StoredProcedure的语句。新生成的查询是:

    exec MyStoredProc @myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'
    

    这个(当然)工作正常。

1 个答案:

答案 0 :(得分:7)

请务必设置selectCommand.CommandType = CommandType.StoredProcedure