mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + "', m_BORROW_DATE,'"; // 錯:多雙單引號,m_BORROW_DATE 變字串常數
mSqlStr = mSqlStr + "','";
拼接結果:`VALUES('reader','book','', m_BORROW_DATE,'','userid')` → 語法錯誤:`''` 空字串、日期變數未加引號/格式錯、多餘逗號。
// 假設 m_BORROW_DATE 是 CTime 或 CString 已格式化為 'YYYY-MM-DD HH:MM:SS'
mSqlStr = mSqlStr + "','"; // 結束 BOOK_ID
mSqlStr = mSqlStr + m_BORROW_DATE; // 直接拼接日期字串 (已含引號或由資料庫函數產生)
mSqlStr = mSqlStr + "','"; // 結束 BORROW_DATE
// 或更安全:用參數化 (CDatabase::ExecuteSQL 不支援,需用 CDaoRecordset/CRecordset 參數化或手動格式化)
CString strDate = m_BORROW_DATE; // 確保格式 '2024-01-15 10:30:00'
mSqlStr.Format(_T("INSERT INTO BORROW (READER_ID, BOOK_ID, BORROW_DATE, B_CLERK_ID) VALUES ('%s', '%s', '%s', '%s')"),
m_strReaderID, m_strBookID, strDate, m_strUserID);
MFC SQL 拼接錯誤 = **多餘單引號、日期變數未正確格式化**。修正:`CString::Format` 一次成型,或改用 `CRecordset` RFX 機制徹底杜絕拼接錯誤。