VC+Access2000+ADO登陆界面实现
Posted 秋水寒林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中实现为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 }
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 }
2.12 将数据库文件放置到VC程序目录下
以上是关于VC+Access2000+ADO登陆界面实现的主要内容,如果未能解决你的问题,请参考以下文章