VC+Access2000+ADO登陸界面實現
效果圖:
1.創建Access數據庫文件
1.1 新建一個空數據庫,本示例數據庫文件名為“db1.mdb”
1.2 雙擊“使用設計器創建表”
1.3 輸入所需的“字段名稱”和“數據類型”,關閉並保存,本示例保存為“userID”
1.4 雙擊打開剛保存的表,輸入賬戶、密碼信息,關閉並保存
2 編寫VC程序
2.1 創建一個基於對話框的VC程序
2.2 新建一個CAdo類
2.3 在Ado.h文件中導入windows自帶的ado庫,如下紅色字體
#if !defined(AFX_ADO_H__8F1210D9_7884_49EC_90A6_0D9AD99368E8__INCLUDED_)
#define AFX_ADO_H__8F1210D9_7884_49EC_90A6_0D9AD99368E8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","ADOEOF") rename("BOF", "ADOBOF")
2.4 為CAdo類增加變量和函數,如下
2.5 在Ado.cpp中實現為
void CAdo::OnInitADO()
{
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection.CreateInstance(__uuidof(Recordset));
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("The database link down!");
}
}
void CAdo::ExitConnect()
{
if(m_pRecordset != NULL)
{
m_pRecordset->Close();
}
if(m_pConnection != NULL)
{
m_pConnection->Close();
}
}
void CAdo::Execute(_bstr_t strSQL)
{
try
{
if(m_pConnection == NULL)
{
OnInitADO();
}
m_pConnection->Execute(strSQL,NULL,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
}
_RecordsetPtr& CAdo::GetRecordset(_bstr_t strSQL)
{
try
{
if(m_pConnection == NULL)
{
OnInitADO();
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(strSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
return m_pRecordset;
}
2.6 插入一個新的對話框資源
2.7 為登陸對話框新增一個CLOGIN類,選中ResourceView中的“IDD_LOGIN”->菜單欄“View->ClassWizard...”,在彈出的對話框中選擇“Create a new Class”,單擊“OK”,在彈出的對話框輸入“CLOGIN”類名
2.8 為CLOGIN類增加控件變量
2.9 在CxApp類的InitInstance中函數中初始化COM環境
2.10 在CxDlg類的OnInitDialog函數中return語句前增加如下代碼
2.11 為登陸對話框的“OK”按鈕增加單擊事件響應函數,並添加如下代碼
void CLOGIN::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
CAdo m_ado;
m_ado.OnInitADO();
CString strSQL;
strSQL.Format("select * from userID where user=‘%s‘ and password=‘%s‘",m_userID,m_password);
m_ado.m_pRecordset = m_ado.GetRecordset((_bstr_t)strSQL);
if(m_userID.IsEmpty() || m_password.IsEmpty())
{
MessageBox("UserID or Password can‘t empty!");
m_userID = "";
m_password = "";
UpdateData(FALSE);
}
else
{
if(!m_ado.m_pRecordset->ADOEOF)
{
CDialog::OnOK();
}
else
{
MessageBox("The UserID or PassWord is not correct!");
m_userID = "";
m_password = "";
UpdateData(FALSE);
}
}
m_ado.ExitConnect();
}
2.12 將數據庫文件放置到VC程序目錄下
VC+Access2000+ADO登陸界面實現