使用C#中的参数执行存储过程时出错

时间:2018-02-15 16:09:48

标签: c# sql-server

如果我在服务器上执行它并且使用我的参数构建一个execute语句(例如string sql =“Exec Get_Data'”+ St +“'...”),我有一个运行良好的存储过程。但是,一旦我尝试:

string strQS = "Exec Get_Data @param1,@param2,@param3,@param4..."

using (SqlConnection conSQL = new SqlConnection(connectionString))
{
    using (SqlCommand cmdSQL = new SqlCommand(strQS, conSQL))
    {
        conSQL.Open();

        cmdSQL.Parameters.AddWithValue("@param1", SqlDbType.VarChar).Value = St;
        cmdSQL.Parameters.AddWithValue("@param2", SqlDbType.VarChar).Value = Loc;
        ...

我收到以下错误:

  

列名或提供的值与表定义不匹配。

显然,如果我在使用参数化查询之前可以运行它,我的列名称没有任何问题,但是我的值如何被处理。我的所有变量都是字符串类型,SQL Server期望所有参数都是类型varchar ...有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要将命令类型更改为StoredProcedure

然后删除EXEC和字符串中的所有参数。

cmdSQL.CommandType = CommandType.StoredProcedure;
string strQS = "Get_Data"