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

MFC 對話框編輯框數據插入 MySQL 為空值的解決

     編輯:程式設計綜合問答

缺少 UpdateData(TRUE) 導致變量未同步

MFC DDX 機制要求在讀取控件值前調用 UpdateData(TRUE),將控件內容同步到成員變量。

錯誤代碼

void CMyDlg::OnBnClickedSave() {
    CString str;
    m_edit.GetWindowText(str); // ❌ 直接讀控件,繞過 DDX 變量
    // 或 未調用 UpdateData(TRUE) 直接使用 m_str 成員
    db.Execute("INSERT INTO t(col) VALUES ('" + str + "')");
}

正確代碼

void CMyDlg::OnBnClickedSave() {
    UpdateData(TRUE); // ✅ 將控件內容同步到 m_str 成員變量
    // 此時 m_str 已包含編輯框最新文本
    db.Execute("INSERT INTO t(col) VALUES ('" + m_str + "')");
}

關鍵點

  • UpdateData(TRUE):控件 → 變量(保存前調用)。
  • UpdateData(FALSE):變量 → 控件(初始化/刷新時調用)。
  • 若不使用 DDX 成員變量,需手動 GetWindowText 並自行管理字符串生命周期。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved