0

(My)SqlDataAdapter がどのように機能するかについて明確にする必要があると思います。MySQL テーブルから 1 つの列を表示するために使用する DGV があります。ただし、レコードを編集する必要がある場合は、他のほとんどのフィールドが必要であり、これを別の 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 を新しい情報で更新できるようにしたいと考えています。

今日までの週末の大半を費やして、まさにそれを示す記事やブログ、または何かを見つけてきました。リスト形式のパラダイム。誰かが私を正しい方向に向けることができますか? コミュニティに感謝します。

4

1 に答える 1

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");
于 2013-03-20T21:42:36.267 に答える