【问题标题】:C# Insert into SQL table is missing the first row from my datagridC# 插入 SQL 表缺少我的数据网格中的第一行
【发布时间】:2009-09-23 23:38:11
【问题描述】:

我正在使用下面的代码将数据从数据网格插入到 SQL 表中,数据网格有 5 行但只有 4 行被插入到表中,第一行被遗漏了。我已将问题缩小到下面的 updateTable。你能发现问题吗?试了一个小时还是不行。

private void updateTable(OdbcConnection conn)
{
                int iCols = _DGV.ColumnCount;
                int iRows = _DGV.RowCount;
                int iIndex = 1;

                string strSql = GetInsertStatement(iCols);

                foreach(DataGridViewRow dr in _DGV.Rows)
                {
                    if (!dr.Visible)
                    {
                        continue;
                    }

                    iIndex++;

                    OdbcCommand cmd = new OdbcCommand();
                    for (int j = 0; j <= iCols - 1; j++)
                    {
                        if (_DGV.Columns[j].Visible == false)
                        {
                            continue;
                        }
                    try
                    {
                        conn.Open();
                        cmd.Connection = conn;
                        cmd.CommandText = strSql;
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {

                    }
                    finally
                    {
                        conn.Close();
                    }
                }
}

【问题讨论】:

    标签: c# sql datagrid


    【解决方案1】:

    您确定网格中的每一行都是可见的吗? IE,在你的循环结束时(正如它所写的那样),iIndex == iRows 吗?

    【讨论】:

      【解决方案2】:

      也许:

      int iIndex = 0;
      

      【讨论】:

      • iIndex 似乎没有在任何地方使用。
      • 我试过了,没有运气,代码不是我的,它属于一个目前下班生病的同事。
      • @Jonas,你是对的。多么奇怪。 @Jade M,他为什么一直在检查 .Visible ?我在想其他一些未显示的代码隐藏了一些东西。
      【解决方案3】:
      for (int j = 0; j <= iCols - 1; j++)
      {
          if (_DGV.Columns[j].Visible == false)
        {
          continue;
        }
      }
      

      j &lt;= iCols - 1;我认为是问题所在,尝试将其更改为&lt;= iCols

      【讨论】:

      • 您能否向提问者提供一些解释,为什么这可以解决他的问题?见How to Answer
      • 我确定这个问题已经解决了 :D 我只是没注意到这个问题是什么时候提出来的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多