首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# DataGridView 選中行數據回填 TextBox 並更新數據庫:雙向綁定與參數化 SQL 實現

     編輯:程式設計綜合問答

核心流程

  1. 選中行 → 回填控件:
    
    private void dgv_CellClick(object sender, DataGridViewCellEventArgs e) {
        if (e.RowIndex < 0) return;
        var row = dgv.Rows[e.RowIndex];
        txtId.Text = row.Cells["Id"].Value?.ToString();
        txtName.Text = row.Cells["Name"].Value?.ToString();
        // ... 其他字段
    }
    
  2. 修改按鈕 → 參數化更新:
    
    private void btnUpdate_Click(object sender, EventArgs e) {
        using (var conn = new SqlConnection(connStr))
        using (var cmd = new SqlCommand(
            "UPDATE Users SET Name=@Name, Age=@Age WHERE Id=@Id", conn)) {
            cmd.Parameters.AddWithValue("@Id", txtId.Text);
            cmd.Parameters.AddWithValue("@Name", txtName.Text);
            cmd.Parameters.AddWithValue("@Age", int.Parse(txtAge.Text));
            conn.Open();
            cmd.ExecuteNonQuery();
        }
        RefreshGrid(); // 重新查詢綁定
    }
    

關鍵最佳實踐

  • 參數化 SQL:防止注入,自動處理類型轉換。
  • using 語句:確保連接/命令釋放。
  • 主鍵不可編輯:txtId.ReadOnly = true。
  • 並發控制:可添加 RowVersion 時間戳列,更新時 WHERE Id=@Id AND RowVersion=@OldVersion。

進階:BindingSource 双向綁定

將 DataGridView、TextBox 綁定到同一 BindingSource,修改自動同步,按鈕僅調用 TableAdapter.Update(),代碼量極少。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved