private void register_user_active_flag()

visitedabe myvisidate=new visitedabe();
myvisidate.procedurename="select username,u_score,u_active_flag from user_info where u_introduce_person=@username";
myvisidate.mysqlcommand.CommandType=CommandType.Text;  
myvisidate.mysqlcommand.CommandText=myvisidate.procedurename;
myvisidate.mysqlcommand.Parameters.Clear();
myvisidate.mysqlcommand.Parameters.Add(new SqlParameter("@username",SqlDbType.NVarChar,20,str_username)); 
myvisidate.OpenBase(); 
//myvisidate.mysqlcommand.ExecuteNonQuery();
DataList_recommand_programe.DataSource=myvisidate.mysqlcommand.ExecuteReader();
 DataList_recommand_programe.DataBind();
myvisidate.mysqlcommand.Dispose();
myvisidate.CloseBase();
}错误入下:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------被准备语句 '(@username nvarchar(20))select username,u_score,u_active_flag fr' 需要参数 @username,但未提供该参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 被准备语句 '(@username nvarchar(20))select username,u_score,u_active_flag fr' 需要参数 @username,但未提供该参数。源错误: 
行 37:  myvisidate.OpenBase(); 
行 38:  //myvisidate.mysqlcommand.ExecuteNonQuery();
行 39:  DataList_recommand_programe.DataSource=myvisidate.mysqlcommand.ExecuteReader();
行 40:             DataList_recommand_programe.DataBind();
行 41:  myvisidate.mysqlcommand.Dispose();
 源文件: \\192.168.18.6\e$\imboke\imboke\userblog\introduce_user.aspx.cs    行: 39 

解决方案 »

  1.   

    visitedabe是你自己写的一个数据库访问类吧?我没有看到你的这个类所以不好说,应该是在给参数复值的时候出了问题,我写了一个程序,你看一下.
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;//一个连接对象
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "dddd";//存储过程名
    SqlParameter sqlParameter = new SqlParameter("@name",name);//@name是存储过程的参数名.name是要复的值.
                    sqlParameter.Direction = ParameterDirection.Input;
    sqlParameter.SqlDbType = SqlDbType.VarChar;
    sqlParameter.Size = 50;
    cmd.Parameters.Add(sqlParameter);//把参数填加到cmd中,我觉得你的程序就应该是这部出了问题.
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = cmd;
                     DataSet ds = new DataSet();
    sda.Fill(ds);
    DataGrid1.DataSource=ds;
    DataGrid1.DataBind();
    希望对你有帮助
      

  2.   

    这是我的数据访问类
    public visitedabe()
    {
       myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"]);
               mysqlcommand=new SqlCommand(procedurename,myConnection);
       mydataadapter=new SqlDataAdapter(procedurename,myConnection);
    }
      

  3.   

    str_username你这个东西在哪里定义的?
      

  4.   

    public class introduce_user : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataList DataList_recommand_programe;
    public string str_username="session";

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    register_user_active_flag();
    }
    //邮箱是否通过验证
    private void register_user_active_flag()

    visitedabe myvisidate=new visitedabe();
    myvisidate.procedurename="select username,u_score,u_active_flag from user_info where u_introduce_person=@username";
    myvisidate.mysqlcommand.CommandType=CommandType.Text;  
    myvisidate.mysqlcommand.CommandText=myvisidate.procedurename;
    myvisidate.mysqlcommand.Parameters.Clear();
    myvisidate.mysqlcommand.Parameters.Add(new SqlParameter("@username",SqlDbType.NVarChar,20,str_username)); 
    myvisidate.OpenBase(); 
    //myvisidate.mysqlcommand.ExecuteNonQuery();
    DataList_recommand_programe.DataSource=myvisidate.mysqlcommand.ExecuteReader();
                DataList_recommand_programe.DataBind();
    myvisidate.mysqlcommand.Dispose();
    myvisidate.CloseBase();
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataList_recommand_programe.SelectedIndexChanged += new System.EventHandler(this.DataList_recommand_programe_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
      

  5.   

    myvisidate.mysqlcommand.Parameters.Add(new SqlParameter("@username",SqlDbType.NVarChar,20,str_username)); 
    改成:
    SqlParameter parm = new SqlParameter("@username",SqlDbType.NVarChar,20);
    parm.Value = str_userna;
    myvisidate.mysqlcommand.Parameters.Add(parm); 试下看