StringBuilder strSql=new StringBuilder();
strSql.Append("update job_searcher set ");
strSql.Append("UserCode=@UserCode,");
strSql.Append("Searcher=@Searcher,");
strSql.Append("education=@education,");
strSql.Append("experience=@experience,");
           strSql.Append(" where jobid=@jobid");
SqlParameter[] parameters = {
new SqlParameter("@UserCode", SqlDbType.VarChar,39),
new SqlParameter("@Searcher", SqlDbType.VarChar,50),
new SqlParameter("@education", SqlDbType.VarChar,10),
new SqlParameter("@experience", SqlDbType.VarChar,20),
new SqlParameter("@jobid", SqlDbType.Char,20)};
parameters[0].Value = model.UserCode;
parameters[1].Value = model.Searcher;
parameters[2].Value = model.education;
parameters[3].Value = model.experience;
parameters[4].Value = model.jobid;
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
为什么 老是提示  "必须声明变量 '@jobid',我明明 有声明 啊?求救?

解决方案 »

  1.   

    是不是你的这个存储过程的顺序没有和你SQL里面的对应上啊??
    以前我也出现过这样的问题,调整一下顺序就好了。
      

  2.   

    DbHelperSQL.ExecuteSql中是不是最后一个参数没有邦到command ?
      

  3.   

    DbHelperSQL是自定义的吗?问题似乎在它上!
      

  4.   

    new SqlParameter("@experience", SqlDbType.VarChar,20),
    new SqlParameter("@jobid", SqlDbType.Char,20)};全用VARCHAR,看看
      

  5.   

    experience=@experience,这个逗号是多余的吧
      

  6.   


      这是用 SQL 语句 , 并且我的 每一个对应都 仔细检查过啊?
      

  7.   

    experience=@experience,多一个逗号
      

  8.   

    先去掉多余的,号看看,如果还不行,跟踪一下数据库的sql-----难免有错,错了莫怪.
      

  9.   


       错误解决了,原来: 上面的 方法我写在一个 BLL.dll 中, 而编译 选项中 是跳过编译的,
    所以我改了以后,  
      即使是调试 过程中 加载的 也是 老的 没有改过的 BLL.dll, 所以出错了,
    问题是 重新 把这个 BLL.dll 重编译, 重新加载 ,就OK ,我也是很纳闷, 明明是 对的,怎么出这么怪的问题顺便 把 这个方法也 给大家, 谢谢大家的 回帖。
    /// 执行SQL语句,返回影响的记录数
    /// </summary>
    /// <param name="SQLString">SQL语句</param>
    /// <returns>影响的记录数</returns>
    public static int ExecuteSql(string SQLString,params SqlParameter[] cmdParms)
    {
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
    using (SqlCommand cmd = new SqlCommand())
    {
    try
    {
    PrepareCommand(cmd, connection, null,SQLString, cmdParms);
    int rows=cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();
    return rows;
    }
    catch(System.Data.SqlClient.SqlException E)
    {
    throw new Exception(E.Message);
    }
    }
    }
    }