1. 程式人生 > >VC+Access2000+ADO登陸界面實現

VC+Access2000+ADO登陸界面實現

emp HERE tin 新建 ase source 函數 wizard inf

效果圖:

技術分享圖片

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中實現為

CAdo類增加的函數,如下

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登陸界面實現