void CDlg_login::OnButton1()
{

CString c_user,c_password;
m_user1.GetWindowText(c_user);
m_password1.GetWindowText(c_password);

if (c_user.IsEmpty()||c_user.IsEmpty())
{
 MessageBox("用户名密码不能为空!","提示",64);
}

m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
CString strJet ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\DataBase.mdb";
m_pConnection->Open(strJet.AllocSysString(),"","",adModeUnknown);

CString sql;
 sql.Format("select *from employees where name='%s' and password='%s'",c_user,c_password);
m_pRecordset->Open(sql.AllocSysString(), m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,-1);

if (c_user==(user = m_pRecordset->GetCollect("name").bstrVal) &&c_password== (password = m_pRecordset->GetCollect("password").bstrVal))
{
 CDialog::OnOK();
 CLOGINDlg dlg;
 dlg.DoModal();

}

实例二,连接数据据至登录对话框(其中部分代码注释加//,仅用来调试期间用,可供参考),代码实现如下:

try
 {
  this->UpdateData(true);

//  if (this->m_username.IsEmpty()||this->m_password.IsEmpty())
  //  {
  //   MessageBox("用户名,密码不能为空!","登录提示",MB_ICONQUESTION);
  //  }

::CoInitialize(NULL);

this->m_pConnection.CreateInstance(__uuidof(Connection));

this->m_pRecordset.CreateInstance(__uuidof(Recordset));

// this->m_pConnection->Open("DSN=staff_dns","","",0);//上面四行为打开数据源连接,此方法使用本地DSN数据源

// CString strJet ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=staff.mdb";  //访问不带密码的access数据库

CString strJet ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=staff.mdb;Jet OLEDB:Database Password=sdoa0806";   //访问带密码的access数据库方法

this->m_pConnection->Open(strJet.AllocSysString(),"","",adModeUnknown);

CString str;

str.Format("select * from tb_staff where username='%s' and password='%s'",this->m_username,this->m_password);

BSTR bstrSQL=str.AllocSysString();

this->m_pRecordset->Open(bstrSQL,(IDispatch*)this->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);

if(!this->m_pRecordset->adoEOF)

{

//   CDebugDlg dlg1;
   //   UpdateData(false);
   //   GetDlgItemText(IDC_EDIT1,dlg1.m_user);
   //   MessageBox(dlg1.m_user);
   //   dlg1.m_StatusBar.SetPaneText(3,m_username);

CDialog::OnOK();
   //MessageBox("调用成功!");
   OutputDebugString("登录成功!");

UpdateData(TRUE);

GetDlgItemText(IDC_EDIT_USERNAME,m_username);

//MessageBox(m_username,"1");

dlg_confirm.m_user=m_username;
   // MessageBox(dlg_confirm.m_user,"2");

UpdateData(FALSE);

dlg_confirm.DoModal();

}

else

MessageBox("用户名,密码输入错误,登录失败!","登录提示",MB_ICONQUESTION);

}
 catch (...)     //增加try...catch异常抛出
 {
  
   AfxMessageBox("数据库连接失败,确认数据库名称与路径是否正确!");  
   return ;
 }

this->m_pRecordset->Close();

this->m_pConnection->Close();

::CoUninitialize();

}

MFC利用ADO建立access数据源 ---包括访问带access密码与不带access密码两种方式)的更多相关文章

  1. 解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

    这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个ShareP ...

  2. 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

    1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...

  3. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...

  4. JS中访问对象的两种方式区别

    可以使用下面两种方式访问对象的属性和方法 1.对象名.属性名 对象名.方法名() 2.对象名["属性名"] 对象名["方法名"]() var obj = { n ...

  5. MyBatis配置数据源的两种方式

    ---------------------siwuxie095                                     MyBatis 配置数据源的两种方式         1.配置方 ...

  6. Python与数据库[2] -> 关系对象映射/ORM[2] -> 建立声明层表对象的两种方式

    建立声明层表对象的两种方式 在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 from sqlalchemy.sql.schema i ...

  7. Python与数据库 sqlalchemy 建立声明层表对象的两种方式

    在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 1 from sqlalchemy.sql.schema import Table, ...

  8. 大数据学习day33----spark13-----1.两种方式管理偏移量并将偏移量写入redis 2. MySQL事务的测试 3.利用MySQL事务实现数据统计的ExactlyOnce(sql语句中出现相同key时如何进行累加(此处时出现相同的单词))4 将数据写入kafka

    1.两种方式管理偏移量并将偏移量写入redis (1)第一种:rdd的形式 一般是使用这种直连的方式,但其缺点是没法调用一些更加高级的api,如窗口操作.如果想更加精确的控制偏移量,就使用这种方式 代 ...

  9. Android跟蓝牙耳机建立连接有两种方式

    Android 跟蓝牙耳机建立连接有两种方式. 1. Android 主动跟蓝牙耳机连BluetoothSettings 中和蓝牙耳机配对上之后, BluetoothHeadsetService 会收 ...

随机推荐

  1. react学习笔记-02

    1.组件嵌套 React允许将代码封装成一个component,然后像html标签一样,插入网页中中. var HelloMessage = React.createClass({ render: f ...

  2. python学习day2

    一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...

  3. JS跨域访问问题

    js跨域了. 只能给几个资料参考了:http://blog.csdn.net/lovingprince/article/details/2954675 http://www.kuqin.com/web ...

  4. 部分服务器使用phpExcel会报错

    其中一个错误提示是:Fatal error: 'break' not in the 'loop' or 'switch' context in /var/www/htdocs/hanya/ThinkP ...

  5. .NET架构师

    闲话不多扯,关于.NET架构师的培训  架构师的知识体系总结:7大重点,对7大重点作为细节的阐述将再后面陆续展开!架构师的体系纲领主要来着这7点.(必须严格记下) 1:现代软件开发过程及架构策略 1. ...

  6. filter过滤action的问题

    今天犯了一个错误,结果白白浪费了半个下午的时间,特记于此. filter过滤Action的时候,要把过滤器配置在Struts2拦截器的前面,这样过滤器才能过滤到Action,否则不可以.

  7. 微信小程序跳转页面

    小程序页面有2种跳转,可以在wxml页面或者js中: 1,在wxml页面中: <navigator url="../index/index">跳转到新页面</na ...

  8. openstack私有云布署实践【16.1 CentOS7.1 只有根分区镜像制作】

    之所以要只有根分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入   在原来的物理机10.40.41.1的CentOS 6.7上制作镜像.(当然如果你的制作镜像的宿主机是 ...

  9. linux搭建apache服务并修改默认路径

    该篇文章主要讲解如何在linux服务器上搭建apache服务器,并修改指定的apache路径到自定义路径下 一:检查服务器上是否已安装apache,停止并卸载系统自带apache服务 命令为:rpm ...

  10. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)

    SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...