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

VC++ 6.0 MFC 使用 ADO 連接 SQL Server 實現登錄驗證

     編輯:程式設計綜合問答

場景描述

MFC 對話框登錄界面,用戶名/密碼存於 SQL Server 表 accounts(acc_user, acc_passwd),需驗證輸入是否匹配。

ADO 代碼實現要點

// 構建參數化查詢,防注入
CString sql = _T("SELECT acc_user, acc_passwd FROM accounts WHERE acc_user = ? AND acc_passwd = ?");
_CommandPtr cmd = NULL;
cmd.CreateInstance(__uuidof(Command));
cmd->ActiveConnection = m_adodc_logIn.GetConnectionString(); // 或直接用 Connection
cmd->CommandText = _bstr_t(sql);
cmd->CommandType = adCmdText;

// 追加參數
cmd->Parameters->Append(cmd->CreateParameter(_T("@user"), adVarChar, adParamInput, 50, m_edit_userName));
cmd->Parameters->Append(cmd->CreateParameter(_T("@pwd"), adVarChar, adParamInput, 50, m_edit_passWord));

_RecordsetPtr rs = cmd->Execute(NULL, NULL, adCmdText);

// 判斷是否查到記錄
if (!rs->adoEOF) {
    MessageBox(_T("登錄成功!"));
} else {
    MessageBox(_T("登錄失敗!用戶名或密碼錯誤"));
}
rs->Close();

關鍵注意事項

  • 使用參數化查詢:避免字符串拼接導致 SQL 注入。
  • 判斷 adoEOF:Recordset 為空表示無匹配行,即登錄失敗。
  • 密碼加密:生產環境切勿明文存儲,應存儲鹽值哈希(如 BCrypt),驗證時比對哈希值。
  • 資源釋放:用完及時 Close() Recordset 與 Connection。

常見錯誤排查

  1. 連接字串錯誤:確認 Provider=SQLOLEDB;Data Source=...;Initial Catalog=...;User ID=...;Password=...。
  2. ADO 組件未註冊:確保 msado15.dll 已註冊,專案引用 Microsoft ActiveX Data Objects 2.x Library。
  3. 編碼不一致:資料庫欄位與輸入編碼需一致(建議均用 UTF-8)。

採用參數化 ADO 查詢並正確判斷 Recordset 狀態,即可穩健實現 MFC 登錄驗證。

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