首页 > 技术文章 > VC+Access2000+ADO登陆界面实现

QSHL 2018-10-14 11:04 原文

效果图:

 

 

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类增加的函数,如下

 1 void CAdo::OnInitADO()
 2 {
 3     try
 4     {
 5         m_pConnection.CreateInstance(__uuidof(Connection));
 6         m_pConnection.CreateInstance(__uuidof(Recordset));
 7         m_pConnection.CreateInstance("ADODB.Connection");
 8 
 9         m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);
10     }
11     catch(_com_error e)
12     {
13         AfxMessageBox("The database link down!");
14     }
15 
16 }
17 
18 void CAdo::ExitConnect()
19 {
20     if(m_pRecordset != NULL)
21     {
22         m_pRecordset->Close();
23     }
24     if(m_pConnection != NULL)
25     {
26         m_pConnection->Close();
27     }
28 
29 
30 }
31 
32 void CAdo::Execute(_bstr_t strSQL)
33 {
34     try
35     {
36         if(m_pConnection == NULL)
37         {
38             OnInitADO();
39         }
40         m_pConnection->Execute(strSQL,NULL,adCmdText);
41     }
42     catch(_com_error e)
43     {
44         e.Description();
45     }
46 }
47 
48 _RecordsetPtr& CAdo::GetRecordset(_bstr_t strSQL)
49 {
50     try
51     {
52         if(m_pConnection == NULL)
53         {
54             OnInitADO();
55         }
56         m_pRecordset.CreateInstance(__uuidof(Recordset));
57         m_pRecordset->Open(strSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
58     }
59     catch(_com_error e)
60     {
61         e.Description();
62     }
63 
64     return m_pRecordset;
65 }
View Code

 

 

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”按钮增加单击事件响应函数,并添加如下代码

 1 void CLOGIN::OnOK() 
 2 {
 3     // TODO: Add extra validation here
 4 
 5     UpdateData(TRUE);
 6     CAdo m_ado;
 7     m_ado.OnInitADO();
 8     CString strSQL;
 9     strSQL.Format("select * from userID where user='%s' and password='%s'",m_userID,m_password);
10     m_ado.m_pRecordset = m_ado.GetRecordset((_bstr_t)strSQL);
11 
12     if(m_userID.IsEmpty() || m_password.IsEmpty())
13     {
14         MessageBox("UserID or Password can't empty!");
15             m_userID = "";
16             m_password = "";
17             UpdateData(FALSE);
18     }
19     else
20     {
21         if(!m_ado.m_pRecordset->ADOEOF)
22         {
23             CDialog::OnOK();
24         }
25         else
26         {
27             MessageBox("The UserID or PassWord is not correct!");
28             m_userID = "";
29             m_password = "";
30             UpdateData(FALSE);
31         }
32     }
33 
34     
35     m_ado.ExitConnect();
36 }
View Code

 

 

2.12 将数据库文件放置到VC程序目录下

 

推荐阅读