【问题标题】:Index was outside the bounds of the array. how to do指数数组的边界之外。怎么做
【发布时间】:2014-10-02 17:36:03
【问题描述】:

检查这个链接我正在使用这种方式将数据从gridview插入到sql:

http://aspsnippets.com/Articles/Save-and-Retrieve-Dynamic-TextBox-values-in-GridView-to-SQL-Server-Database.aspx

现在我在插入部分出现错误请帮助????????

private void InsertRecords(StringCollection sc)
    {
        SqlConnection conn = new SqlConnection(sConn);
        StringBuilder sb = new StringBuilder(string.Empty);
        string[] splitItems = null;
        foreach (string item in sc)
        {

            string sqlStatement = "INSERT INTO Tb_FamilyData (FormNo,Name,ITSNo,Age,Relation) VALUES";
            if (item.Contains(","))
            {
                splitItems = item.Split(",".ToCharArray());
                sb.AppendFormat("{0}('{1}','{2}','{3}','{4}','{5}'); ", sqlStatement, splitItems[0], splitItems[1], splitItems[2], splitItems[3], splitItems[4]);
            }

        }

        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sb.ToString(), conn);
            //cmd.Parameters.AddWithValue("@FormNo", txts);
            //cmd.Parameters.AddWithValue("@Name", txtsrno.Text);
            //cmd.Parameters.AddWithValue("@ITSNo", txtyrprchs.Text);
            //cmd.Parameters.AddWithValue("@Age", txtyrprchs.Text);
            //cmd.Parameters.AddWithValue("@Relation", txtyrprchs.Text);
            //cmd.CommandType = CommandType.Text;
            //cmd.ExecuteNonQuery();

            Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Records Successfuly Saved!');", true);

        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Insert Error:";
            msg += ex.Message;
            throw new Exception(msg);

        }
        finally
        {
            conn.Close();
        }
    }

或者请指导我以任何其他方式将数据从 htmltable 或 asptable 插入 sql 数据库

【问题讨论】:

  • 问题一定出在这个数组上splitItems[4], splitItems[5] 的某个地方,但你是唯一可以一步一步调试该程序以查看边界外的位置的人 - 或某些地方另一点。所以一步一步调试你的代码来修复它。在示例中,我看到只有 3 个项目添加到此数组中。
  • 你的item 是什么样的?你确定是五个逗号分隔的值吗?

标签: c# asp.net gridview html-table


【解决方案1】:

我猜splitItems 的项目少于 5 个,尽管您尝试访问它。

在使用splitItems之前检查长度:

if (splitItems != null && splitItems.Length > 4)
{
    // use the array
}

【讨论】:

  • 非常感谢,现在说记录已成功保存,但 sql 中没有插入数据
  • 你有没有评论` //cmd.ExecuteNonQuery();`?它到达那里了吗?
  • 对不起我的错误。我删除了评论,但现在它说“ExecuteNonQuery:CommandText 属性尚未初始化”
  • 请检查下面的代码
  • 你的cmd.ExecuteNonQuery(); 只有在有足够的项目时才会被调用。确保至少有 5 个。
猜你喜欢
  • 2011-04-15
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多