sql >> データベース >  >> RDS >> Mysql

datagridviewの選択した行からmysqlデータベースを更新します

    これは、実行する必要があることの単なる擬似コードです

    string cmdText = @"UPDATE t_pi_Clients
                     SET ClientName = @ClientName,
                         PostalAdd = @PostalAdd,
                         Telephone = @Telephone,
                         Fax = @Fax,
                         .... etc ....
                     WHERE ClientCode = @ClientCode";
    using(MySqlConnection cn = new MySqlConnection(.....))
    using(MySqlCommand cmd = new MySqlCommand(cmdText, cn))
    {
        cn.Open();
        cmd.Parameters.AddWithValue("@ClientName", txtboxClientName.Text);
        cmd.Parameters.AddWithValue("@PostalAdd", txtboxPostalAddress.Text);
        ....etc etc...
        cmd.Parameters.AddWithValue("@ClientCode", textboxClientCode.Text);
        int rowsUpdated = cmd.ExecuteNonQuery();
        if(rowsUpdated > 0) 
        {
            // extract the code that loads DataGridView1 from the Form_Load
            // and create a reusable method that you could call from here
        }
    }
    

    まず、UPDATEを使用してSQLコマンドテキストを作成します 句。主キー(レコードを一意に識別するフィールド)はClientCodeであると想定しています。 フィールド。

    次に、接続とコマンドを作成します。コマンドパラメータコレクションに、TextBoxから値を取得するテキストに必要なパラメータを入力します。
    ExecuteNonQueryを呼び出します。 値を保存します。

    成功した場合は、datagridviewを更新または再ロードする必要があります。最善のアプローチは、現在の行のグリッドビューセルにテキストボックスからの新しい値を1つずつ設定するか、form_loadで使用されるコードを抽出してグリッドを埋め、ボタンから呼び出すことができる新しいメソッドを作成することです。イベントをクリックします。 (ただし、レコードが多い場合は遅くなる可能性があります)




    1. ストアドプロシージャのselectステートメントで変数を使用して列名を渡す必要がありますが、動的クエリを使用できません

    2. エラー:ER_NOT_SUPPORTED_AUTH_MODE:クライアントはサーバーから要求された認証プロトコルをサポートしていません。 MySQLクライアントのアップグレードを検討してください

    3. PostgreSQLの日付から世紀を取得する

    4. 移行中にデータベースが構成されていないlaravel