代码之家  ›  专栏  ›  技术社区  ›  Beska

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

  •  1
  • Beska  · 技术社区  · 16 年前

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

    我有一个试图调用存储过程的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附近的语法不正确”。

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

    果不其然,如果我尝试做同样的事情,我会得到同样的错误。因此,我的问题是:

    1. 生成的查询有什么问题?
    2. 为什么C#会生成无效的查询?我的C#代码有错吗?

    编辑: 代理_9191搞定了……我愚蠢地省略了将selectCommand类型设置为StoredProcedure的语句。新生成的查询是:

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

    这个(当然)很好用。

    1 回复  |  直到 16 年前
        1
  •  7
  •   Agent_9191    16 年前

    确保设置您的 selectCommand.CommandType = CommandType.StoredProcedure .