VC+Access2000+ADO登陆界面实现

效果图:

1.创建Access数据库文件

1.1 新建一个空数据库,本示例数据库文件名为db1.mdb

1.2 双击“使用设计器创建表”

1.3 输入所需的“字段名称”和“数据类型”,关闭并保存,本示例保存为“userID

1.4 双击打开刚保存的表,输入账户、密码信息,关闭并保存

 

编写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程序目录下

猜你喜欢

转载自www.cnblogs.com/QSHL/p/9785636.html