簡體   English   中英

DataGridView和記錄ID C#

[英]DataGridView and Record ID C#

我想我需要澄清(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刷新新信息。

我在今天整個周末的大部分時間里都找到了一篇文章或博客,或者確實能證明這一點的東西。 列表形式范式。 有人可以指出正確的方向嗎? 非常感謝社區。

根據經驗,您不應選擇所有字段,而應僅選擇所需的字段

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM