DataGridView和记录ID C#

时间:2013-03-20 20:43:45

标签: c# database datagridview sqldataadapter

我想我需要澄清(My)SqlDataAdapter的工作原理。我有一个DGV用于显示MySQL表中的一列;但是当我需要编辑记录时,我需要大多数其他字段,而我在另一个winform中执行此操作。所以我想我需要一些最佳实践建议:

问题1:绑定到数据源时:我是否需要在表单中选择要编辑的所有字段?

string query = "SELECT * FROM cusdata";
cusAdapter = new MySqlDataAdapter(query,pppDB.sqlConn);         
cusAdapter.Fill(mainSet,"cusdata");
dgv_cusData.DataSource = mainSet.Tables["cusdata"]

问题2:我在网上看到很多关于仅选择要在DGV中显示的字段的信息,但是如果我编辑该数据,那么适配器如何准确知道后端正在更新哪条记录??

我想我对不同的方法感到有点困惑,我需要一些指导。我想要一个datagridview,我可以在其中显示单个列(客户名称)。我希望能够以另一种形式编辑客户记录,并在成功完成数据库操作后使用新信息刷新DVG。

到今天为止,我已经给了一个周末最好的部分,找到一篇文章或博客,或者其他可以证明这一点的内容。列表形式范例。有人可以指点我正确的方向吗?非常感谢社区。

1 个答案:

答案 0 :(得分:1)

根据经验,您不应选择所有字段,而只选择您需要的字段

Select CustId, CustName, CustAddress, CustPhone from cusdata

这会影响表现。

编辑数据时,您可以使用以下代码:

string connectionString = "[Put your connection string here]";
using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("UPDATE cusdata SET CustName=@CustName, CustAddress=@CustAddress WHERE CustId=@CustId", conn))
        {
            cmd.Parameters.AddWithValue("@CustId", 1);
            cmd.Parameters.AddWithValue("@CustName", "Name Input");
            cmd.Parameters.AddWithValue("@CustAddress", "Address input");

            int rows = cmd.ExecuteNonQuery();

            //rows number of record got updated
        }
    }

这部分代码允许您指定要在表格中更新的字段和数据

cmd.Parameters.AddWithValue("@CustId", 1);
cmd.Parameters.AddWithValue("@CustName", "Name Input");
cmd.Parameters.AddWithValue("@CustAddress", "Address input");