Создание формы входа в MFC с использованием базы данных C++
Привет всем , я создаю простое графическое приложение в MFC для управления базами данных студентов.
Я создал форму входа в систему для уже существующего проекта, над которым работал.Мне пришлось это сделать, так как мне сказали, что форма входа нужна только сейчас.
Я должен использовать базу данных MS-Access для хранения Логинов и паролей,а затем я должен подключить свою форму входа в эту базу данных таким образом ,чтобы, если я наберу данные логина и пароля в редакторах, если они существуют в базе данных, она должна перейти в другую форму при нажатии кнопки "войти", иначе она должна показать сообщение "его недействительно".Этот проект представляет собой приложение на основе диалогового окна VC++ MFC.
пожалуйста, помогите мне в этом ..я приложил свой код ниже, я написал select qurey, а также, пожалуйста, направьте меня, как я могу действовать дальше
Что я уже пробовал:
#include "stdafx.h" #include "kgf.h" #include "secdlg.h" #include "thrdlg.h" #include "string.h" #include "odbcinst.h" #include "afxdb.h" // secdlg dialog IMPLEMENT_DYNAMIC(secdlg, CDialog) secdlg::secdlg(CWnd* pParent /*=NULL*/) : CDialog(secdlg::IDD, pParent) , m_user(_T("")) , m_password(_T("")) { } secdlg::~secdlg() { } void secdlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_user); DDX_Text(pDX, IDC_EDIT2, m_password); } BEGIN_MESSAGE_MAP(secdlg, CDialog) ON_BN_CLICKED(IDOK, &secdlg::OnBnClickedOk) END_MESSAGE_MAP() // secdlg message handlers void secdlg::OnBnClickedOk() { UpdateData(); CDatabase database; CString SqlString; CString sDsn; CString sDriver = L"MICROSOFT ACCESS DRIVER (*.mdb, *.accdb)"; CString sFile = L"G:\\manju\\wfh\\rock.accdb"; sDsn.Format(L"ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile); TRY{ database.Open(NULL,false,false,sDsn); //CRecordset recset( &database ); SqlString.Format(_T("SELECT *FROM userdata WHERE UserID = %s and Password = %s ", m_user,m_password)); //bool res=recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly); database.ExecuteSQL(SqlString); if (m_user == UserID && m_password == Passsword) { AfxMessageBox (L" Suucessfully connnected"); } else { AfxMessageBox(L" UserID and Password is wrong!! "); } database.Close(); }CATCH(CDBException, e) { AfxMessageBox(L"Database error: "+e->m_strError); //AfxMessageBox(L"wrong username password!"); } END_CATCH; }
Richard MacCutchan
В чем же вопрос?