如果我在服务器上执行它并且使用我的参数构建一个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
...有什么想法吗?
答案 0 :(得分:1)
您需要将命令类型更改为StoredProcedure
。
然后删除EXEC和字符串中的所有参数。
cmdSQL.CommandType = CommandType.StoredProcedure;
string strQS = "Get_Data"