项目链接
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( ) ) ;
}