【问题标题】:Read from Database and Insert into DataGridView从数据库中读取并插入 DataGridView
【发布时间】:2017-03-29 13:22:58
【问题描述】:

我如何从数据库中读取记录并可以插入到DataGridView。我不想绑定数据源。只想使用 While 循环读取和插入。我知道如何读取数据库Sql Server 2008 R2 Express Edition 但无法在Datagridview 中插入记录。

谁能帮帮我?

string query = "Select id, IdNo, status From Members Where FamilyHeadIqama=@Head";

sqlCommand = new SqlCommand(query, sqlConnection);
sqlConnection.Open();
sqlCommand.Parameters.AddWithValue("@Head", familyMemberId);
sqlDataReader = sqlCommand.ExecuteReader();

if (sqlDataReader.HasRows)
    {
      //What to write here while my DataGridView Name is ufGView and it has 
      //4 column. Names are Id, IdNo{TextBox}, Status{CheckBox}, Action{HyperLink}
    }
}
catch (Exception exp)
{
          MessageBox.Show(exp.Message.ToString(), "Exception in CheckFamilyMembers");
}

我正在寻找这样的东西。

 int i = 0;
            while (sqlDataReader.Read())
            {
                ufGview.Rows[i].Cells["Column3"].Value = sqlDataReader["id"].ToString();
                ufGview.Rows[i].Cells["Column1"].Value = sqlDataReader["IdNo"].ToString();
                ufGview.Rows[i].Cells["Column2"].Value = sqlDataReader["status"].ToString();

                i++;
            }

【问题讨论】:

标签: c# datagridview sql-server-2008r2-express


【解决方案1】:

谢谢大家,

感谢您的友好回复。我通过将AllowUserToAddRows 属性更改为True 并像这样修改一些代码得到了结果..

   for (int i = 1; i <= TOTALMEMBERS; i++)
   {
       string[] row = new string[] { i.ToString() };
       ufGview.Rows.Add(row);
   }

   int ji = 0;

   while (sqlDataReader.Read())
   {
        ufGview.Rows[ji].Cells["Column3"].Value = sqlDataReader["id"].ToString();
        ufGview.Rows[ji].Cells["Column1"].Value = sqlDataReader["IdNo"].ToString();
        ufGview.Rows[ji].Cells["Column2"].Value = sqlDataReader["status"].ToString();

      ji++;
    }

【讨论】:

    【解决方案2】:

    这很简单,我希望这就是你要找的。​​p>

    if (sqlDataReader.HasRows)
        {
               DataTable schemaTable = reader.GetSchemaTable();
               foreach (DataRow currentrow in schemaTable.Rows)
               {
    
                   ufgView.rows.add(currentrow )  //  gridviewname as per your comment
               }
        }
    

    希望对您有所帮助,如果您需要进一步的澄清或疑问,请告诉我。

    谢谢 卡提克

    【讨论】:

    • 感谢您的帮助。但我正在寻找类似我编辑过的帖子中的内容
    【解决方案3】:

    您可以像这样从SqlDataReader 获取DataTable

    using (var sqlDataReader = sqlCommand.ExecuteReader())
    {
        var dataTable = new DataTable();
        dataTable.Load(sqlDataReader);
        return dataTable;
    }
    

    你可以像这样设置gridviews源:

    dataGridView1.DataSource = dataTable;
    

    【讨论】:

    • 感谢您的帮助。但我正在寻找类似我编辑过的帖子中的内容
    • 这可行,但我面临的问题是结果网格中的列名是我们在数据库中使用的列名,这是一种 raw 而不是真正的用户-友好的。如何在加载数据期间使用自定义列名而不必处理每一列?
    【解决方案4】:

    是这样的。

    DataTable dt = new DataTable();
    DataRow dr = new DataRow();
    
    While sqlDataReader.Read(){
    dr = dt.newRow();
    dr["Id"] = sqlDataRead.item["id"];
    .
    .   
    .
    dt.rows.add(dr);
    }
    
    DataGridView.datasource = dt;
    

    希望对你有帮助

    【讨论】:

    • 我不想将它与数据源绑定。因为它使更新过程变得复杂
    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多