索引超出了数组界限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。源错误: 
行 37:                  SqlParameter[] parms = new SqlParameter[]{
行 38:   };
行 39:                  parms[0].Value = account.VipCode;      
行 40:                  parms[1].Value = account.Zjcode;
行 41:                  parms[2].Value = account.Oldpassword;
 源文件: g:\VIP\VIPWebsite\App_Code\DataProvider\EditPwdProvider.cs    行: 39 堆栈跟踪: 
[IndexOutOfRangeException: 索引超出了数组界限。]
   VIPWebsite.DataProvider.EditPwdProvider.Update(BaseEntity entity) in g:\VIP\VIPWebsite\App_Code\DataProvider\EditPwdProvider.cs:39
   VIPWebsite.BussinesLogic.EditPwdManager.UserinfoUpdate(EditpwdEntity account) in g:\VIP\VIPWebsite\App_Code\BussinesLogic\EditPwdManager.cs:38
   VIPWebsite.EditPassWord.Updateuserinfo() in g:\VIP\VIPWebsite\EditPassWord.aspx.cs:66
   VIPWebsite.EditPassWord.SureButton_Click(Object sender, EventArgs e) in g:\VIP\VIPWebsite\EditPassWord.aspx.cs:99
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102 
---------------------------------------------------------------------------
EditPwdProvider.cs    代码如下:using System;
using System.Data;
using System.Data.SqlClient;using VIPWebsite.Entity;namespace VIPWebsite.DataProvider
{
    /// <summary>
    /// Summary description for WebAccountProvider.
    /// </summary>
    public class EditPwdProvider : BaseDataProvider
    {
        private const string SQL_USER_update = "Update_userinfo";        private const string PARM_vip_CODE = "@vipcode";
        private const string PARM_USER_zjcode = "@zjcode";
        private const string PARM_oldpassword = "@oldpassword";
        private const string PARM_newpassword = "@newpassword";
        private const string PARM_repeatpassword = "@repeatpassword";        public EditPwdProvider()
       {
         }         #region BaseDataProvider Members         public override bool Update(BaseEntity entity)
         {
             if (entity.GetType().Equals(typeof(EditpwdEntity)))
             {
                 EditpwdEntity account = entity as EditpwdEntity;
                 SqlParameter[] parms = new SqlParameter[]{
 };
                 parms[0].Value = account.VipCode;      
                 parms[1].Value = account.Zjcode;
                 parms[2].Value = account.Oldpassword;
                 parms[3].Value = account.Newpassword;
                 parms[4].Value = account.Repeatpassword;                 using (SqlConnection conn = new SqlConnection(this.DbConnString))
                 {
                     try
                     {
                         int iRet = SQLHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, SQL_USER_update, parms);
                         return (iRet > 0) ? true : false;
                     }
                     catch
                     {
                         return false;
                     }
                     finally
                     {
                         if (conn.State.Equals(ConnectionState.Open)) { conn.Close(); }
                     }
                 }
             }             return false;
         }         public override object SelectSingleObject(BaseEntity entity)
         {
             // TODO:  Add WebAccountProvider.GetMultipleRows implementation
             throw new NotSupportedException();
         }         public override System.Data.DataSet SelectAllRow(BaseEntity entity)
         {
             // TODO:  Add WebAccountProvider.GetMultipleRows implementation
             throw new NotSupportedException();
         }         public override System.Data.SqlClient.SqlDataReader SelectOneRow(BaseEntity entity)
         {
             // TODO:  Add WebAccountProvider.GetSingleRow implementation
             throw new NotSupportedException();
         }         public override bool Add(BaseEntity entity)
         {
             // TODO:  Add WebAccountProvider.GetSingleRow implementation
             throw new NotSupportedException();
         }         public override bool Delete(BaseEntity entity)
         {
             // TODO:  Add WebAccountProvider.Delete implementation
             throw new NotSupportedException();
         }         #endregion    }
}---------------------------------------------------------------------------各位大侠帮忙看看这个问题该如何解决?

解决方案 »

  1.   

    SqlParameter[] parms = new SqlParameter[4];
      

  2.   

    应该是5SqlParameter[] parms = new SqlParameter[5];
      

  3.   

    确保你的parms里面元素多于3...
    之前加个判断是否<0或者>=Length
      

  4.   

    -_-b
    LZ你嘴太快了.才看到0回复,进来就两个回复了-_-b
      

  5.   

    SqlParameter[] parms = new SqlParameter[]
    {new SqlParameter(),new SqlParameter(),new SqlParameter(),new SqlParameter(),new SqlParameter()};
      

  6.   

    SqlParameter[] parms = new SqlParameter[]{
    行 38:   };
    你这样定义了一个空的parms数组应该是
    SqlParameter[] parms = new SqlParameter[5]
      

  7.   

    不对啊
    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS0178: 无效的秩说明符: 应为“,”或“]”源错误: 行 35:              {
    行 36:                  EditpwdEntity account = entity as EditpwdEntity;
    行 37:                  SqlParameter[] parms = new SqlParameter[5]{
    行 38:   };
    行 39:                  parms[0].Value = account.VipCode;      
     源文件: g:\VIP\VIPWebsite\App_Code\DataProvider\EditPwdProvider.cs    行: 37 
      

  8.   

    SqlParameter[] parms = new SqlParameter[]
    {new SqlParameter(),new SqlParameter(),new SqlParameter(),new SqlParameter(),new SqlParameter()};
      

  9.   

    SqlParameter[] parms = new SqlParameter[5];
      

  10.   

    还是不对!
    未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 36:                  EditpwdEntity account = entity as EditpwdEntity;
    行 37:                  SqlParameter[] parms = new SqlParameter[5];
    行 38:                  parms[0].Value = account.VipCode;      
    行 39:                  parms[1].Value = account.Zjcode;
    行 40:                  parms[2].Value = account.Oldpassword;
     源文件: g:\VIP\VIPWebsite\App_Code\DataProvider\EditPwdProvider.cs    行: 38 堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       VIPWebsite.DataProvider.EditPwdProvider.Update(BaseEntity entity) in g:\VIP\VIPWebsite\App_Code\DataProvider\EditPwdProvider.cs:38
       VIPWebsite.BussinesLogic.EditPwdManager.UserinfoUpdate(EditpwdEntity account) in g:\VIP\VIPWebsite\App_Code\BussinesLogic\EditPwdManager.cs:38
       VIPWebsite.EditPassWord.Updateuserinfo() in g:\VIP\VIPWebsite\EditPassWord.aspx.cs:66
       VIPWebsite.EditPassWord.SureButton_Click(Object sender, EventArgs e) in g:\VIP\VIPWebsite\EditPassWord.aspx.cs:99
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102 
      

  11.   

    因为没有实例化.SqlParameter[] parms = new SqlParameter[5];  parms[0] = new SqlParameter();
      parms[0].Value = account.VipCode;  . .....或者SqlParameter[] parms = new SqlParameter[5]{new SqlParameter(),SqlParameter(),SqlParameter(),SqlParameter(),SqlParameter()}