问题时这样的:
向数据库中添加信息
使用stringBuilder来实现高效率的字符串操作
使用字符串的格式化,用数组的值来代替字符串中的占位符
其中几条语句:
StringBuilder sb=new StringBuilder();
ArrayList values = new ArrayList();
先定义几个变量
sql=String.Format(sb.ToString(),values.ToArray());
就是这个语句出问题,说:"索引(从零开始)必须大于或等于零,且小于参数列表的大小"请教高手们这是什么回事?该如何解决???

解决方案 »

  1.   

    你的values还是空的呢,怎么就ToArray了
      

  2.   

    应该是你的StringBuilder里的{0}...{n},n的大小和values.ToArray()生成的数组中值的数量不一致。
      

  3.   

    索引(从零开始)必须大于或等于零,且小于参数列表的大小
    是因为values值为NULL,楼主可以调试的时候看看
      

  4.   

    前面的代码就这样: 不知道问题出在哪里??    protected void btnAccept_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {    
                
                //save new user to database
                SqlConnection con;
            string sql;
            SqlCommand cmd;
            StringBuilder sb=new StringBuilder();
            ArrayList values = new ArrayList();            sb.Append("INSERT INTO[User]");
                sb.Append("(UserID,Login,Password,FirstName,LastName,");
                sb.Append("PhoneNumber,Email,IsAdministrator,Address,");
                sb.Append("CellNumber,DateOfBirth)");
                sb.Append("VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',");
                //Optional values without quotes as they can be the Null value.
                sb.Append("{8},{9},{10})");            //Add required values to replace
                values.Add(Guid.NewGuid().ToString());
                values.Add(txtUserName.Text);
                values.Add(txtPwd.Text);
                values.Add(txtFName.Text);
                values.Add(txtLName.Text);
                values.Add(txtPhone.Text);
                values.Add(txtEmail.Text);
                values.Add(0);            //Add the optional values or Null
                if(txtAddress.Text != string.Empty)
                    values.Add(""+txtAddress.Text+"");
                else
                    values.Add("Null");
                if(txtBirth.Text != string.Empty)
                    values.Add(""+txtBirth.Text+"");
                else
                    values.Add("NUll");            //Format the string with the array of values.
               sql=String.Format(sb.ToString(),values.ToArray());
    来到上面这一句就出问题了,是不是StringBuilder里的{0}...{n},n的大小和values.ToArray()生成的数组中值的数量不一致造成这个问题的?
      

  5.   

    解决问题了,原来真的是这个原因:StringBuilder里的{0}...{n},n的大小和values.ToArray()生成的数组中值的数量不一致造成这个问题
    所以谢谢各位大哥!!!小弟万分感谢了!!