项目链接
https://download.csdn.net/download/weixin_45525272/13085403
MFC界面编写
数据库设计代码
-- 账号密码管理系统 create table login( strname varchar(20), strpassword varchar(20) not null, strquestion varchar(40), stranswer varchar(40), primary key(strname) ); insert into login values ('喜子','123456','你就读的大学?','燕山大学'), ('大壮','111111','你多大了?','我还是个孩子'); insert into CUSTOMER values ('1','yim','F','16655'), ('2','tim','M','55555'); select *from login where strname='喜子' create table loginsad( strname int, strpassword varchar(20) not null, strquestion varchar(40), stranswer varchar(40), primary key(strname) ); insert into login values ('123','123456','你就读的大学?','燕山大学');
登陆界面
找回密码
功能主界面
界面不一一展示,大家可以直接下载项目链接
设置了三个常用查询语句的实现
实现代码如下
1.给利派送订单的外卖员的体温:
SELECT Temperature FROM DELIVERY_MAN,CUSTOMER,Cus_Evaluate_Deli WHERE DELIVERY_MAN.D#=Cus_Evaluate_Deli.D# AND Cus_Evaluate_Deli.C#=CUSTOMER.C# AND CUSTOMER.Cname = '利';
2.被女顾客评价的派送员的平均工资
SELECT avg(Salary) as '平均工资' FROM DELIVERY_MAN,CUSTOMER,Cus_Evaluate_Deli WHERE Cus_Evaluate_Deli.D#=DELIVERY_MAN.D# and Cus_Evaluate_Deli.C#=CUSTOMER.C# and CUSTOMER.Csex='F'
3.所有评分大于4.8分的商家的最大浏览次数
select MAX(VisitNumber) as '最大浏览次数' from STORE,CUSTOMER,Place_Order where Place_Order.B#=STORE.B# and Place_Order.C#=CUSTOMER.C# and Place_Order.VisitNumber>4.8
项目要点
1、与数据库交互——ADO接口(两种方法)
一、ADO类
通过创建ADO对象来对数据库进行操作。
头文件
#pragma once #import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") class CADOConn { public: CADOConn(); ~CADOConn(); _ConnectionPtr m_pConnection; // 对象智能指针连接操作数据库 _RecordsetPtr m_pRecordPtr; // 对象指针(记录集) // 初始化连接数据库,执行查询,执行SQL语句,断开连接 // 初始化连接数据库,执行查询,执行SQL语句,断开连接 void OnInitDBConnect(); _RecordsetPtr &GetRecordSet(_bstr_t bstrSQL); BOOL ExecuteSQL(_bstr_t bstrSQL); void ExitConnect(); };
源文件
#include "stdafx.h" #include "ADOConn.h" CADOConn::CADOConn() { } CADOConn::~CADOConn() { } void CADOConn::OnInitDBConnect() { // 创建connection对象 m_pConnection.CreateInstance("ADODB.Connection"); // 设置字符串 _bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ROOSYS;Data Source=.";// Catalog数据库名称,Data数据库 .表示本地数据库 // 连接数据库 双引号里写对应连接数据库的账号和密码 m_pConnection->Open(strConnect, "", "", adModeUnknown); } _RecordsetPtr & CADOConn::GetRecordSet(_bstr_t bstrSQL) { try { if (m_pConnection == NULL) // 连接对象不存在 OnInitDBConnect(); m_pRecordPtr.CreateInstance(__uuidof(Recordset)); // 创建记录集对象 // 执行查询,等待记录集 m_pRecordPtr->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) // 捕捉异常 { AfxMessageBox(e.Description()); } return m_pRecordPtr; // 返回记录集 } BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL) { try { if (m_pConnection == NULL) { OnInitDBConnect(); } m_pConnection->Execute(bstrSQL, NULL, adCmdText); return true; } catch (_com_error e) { AfxMessageBox(e.Description()); return false; } } void CADOConn::ExitConnect() { if (m_pConnection != NULL) { m_pRecordPtr->Close(); // 关闭记录 m_pConnection->Close(); // 关闭连接 } // 清除缓存 ::CoUninitialize(); }
二、通过pRes直接操作ADO
连接操作
初始化连接中 strConnect = “Provider=SQLOLEDB;Server=127.0.0.1,1433;Database=ROOSYS;uid=Sa;pwd=123456”;//初始化连接
其中参数:
server:你所要连数据库的主机IP地址
database:数据库名
uid:权限(sa是管理员权限)
pwd:数据库密码
// TODO: 在此添加额外的初始化 CoInitialize(NULL); //initialize COM environment pRst.CreateInstance("ADODB.Recordset"); pMyConnect.CreateInstance("ADODB.Connection"); _bstr_t strConnect;//smart_prt-connectional command; //strConnect = "Provider=SQLOLEDB;Server=localhost;Database=testDB;uid=Sa;pwd=123456"; strConnect = "Provider=SQLOLEDB;Server=127.0.0.1,1433;Database=ROOSYS;uid=Sa;pwd=123456";//初始化连接 try { pMyConnect->Open(strConnect, "", "", adModeUnknown);//服务器连接 MessageBox(_T("连接成功")); } catch (_com_error &) { MessageBox(_T("连接失败")); } return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE
数据处理操作
CString strbno,strcol,strupdatainfo; GetDlgItemText(IDC_EDIT_UPDATABNO, strbno); GetDlgItemText(IDC_EDIT_UPDATACOL, strcol); GetDlgItemText(IDC_EDIT_UPDATAINFO, strupdatainfo); CString csinsert; csinsert.Format(_T("update CUSTOMER set %s='%s' where C#='%s'"), strcol, strupdatainfo, strbno); //_bstr_t insert = "insert into TableTest values('name','sex',Age)"; try { pMyConnect->Execute((_bstr_t)csinsert, NULL, adCmdText); MessageBox(_T("修改成功"), _T("提示")); } catch (_com_error &e) { MessageBox(e.ErrorMessage()); }