📄 database.cpp
字号:
// DataBase.cpp: implementation of the CDataBase class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Library.h"
#include "DataBase.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDataBase::CDataBase()
{
}
CDataBase::CDataBase(CString biao)
{
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sysinfo.mdb";// 打开本地Access库aaa.mdb
m_pConnection->Open(strConnect,"","",adModeUnknown);
//AfxMessageBox("连接数据库成功!");
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
//m_pConnection->Execute((_bstr_t)biao,NULL,adCmdText);
m_pRecordset ->Open((_bstr_t)biao,_variant_t((IDispatch*) m_pConnection,true), //设置活动连接
adOpenDynamic,//游标类型
adLockOptimistic,//锁的类型
adCmdText);
//AfxMessageBox("创建结果集成功!");
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
CDataBase::~CDataBase()
{
}
void CDataBase::DengLu(CString strName,CString strPw)
{
LonginFlag=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
if(strName==(_bstr_t)vUsername)
{
vPW = m_pRecordset->GetCollect("password");
//temp=(char*)(_bstr_t)vPW;
if(strPw==(_bstr_t)vPW)
{
//LonginFlag=1;
CPublic::LF=1;
CPublic::adminID=strName;
//AfxMessageBox("欢迎"+strName+"登录!");
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
if(CPublic::LF!=1)
{
AfxMessageBox("密码错误!");
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
//AfxMessageBox("关闭数据库成功!");
//return LonginFlag;
}
int CDataBase::XXMM(CString jmm,CString xmm,CString qrxmm)
{
xg=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
if(CPublic::adminID==(_bstr_t)vUsername)
{
vPW = m_pRecordset->GetCollect("password");
//temp=(char*)(_bstr_t)vPW;
if(jmm==(_bstr_t)vPW)
{
if(xmm!="")
{
if(xmm==qrxmm)
{
try
{
m_pRecordset->PutCollect("password",_bstr_t(xmm));
m_pRecordset->Update();
AfxMessageBox("修改密码成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
xg=1;
}
else
{
AfxMessageBox("两次输入的新密码不一致,请重新输入!");
}
}
else
{
AfxMessageBox("密码不能为空!");
}
}
else
{
AfxMessageBox("旧密码错误!");
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return xg;
}
void CDataBase::QHYH(CString qhyhm,CString qhyhpw)
{
LonginFlag=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
if(qhyhm==(_bstr_t)vUsername)
{
vPW = m_pRecordset->GetCollect("password");
//temp=(char*)(_bstr_t)vPW;
if(qhyhpw==(_bstr_t)vPW)
{
//LonginFlag=1;
CPublic::LF=1;
CPublic::adminID=qhyhm;
AfxMessageBox("切换用户成功!");
//AfxMessageBox(CPublic::adminID);
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
if(CPublic::LF!=1)
{
AfxMessageBox("密码错误!");
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
//AfxMessageBox("关闭数据库成功!");
}
int CDataBase::XTCSH()
{
xtcsh=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
if(CPublic::adminID==(_bstr_t)vUsername)
{
//AfxMessageBox(CPublic::adminID);
vFG = m_pRecordset->GetCollect("flag");
//temp=(char*)(_bstr_t)vPW;
if(1==atoi((char*)(_bstr_t)vFG))
{
xtcsh=1;
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return xtcsh;
}
int CDataBase::ZSLK(CString zslkmm)
{
zslk=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vUsername = m_pRecordset->GetCollect("username");///取得username字段的值
if(CPublic::adminID==(_bstr_t)vUsername)
{
vPW = m_pRecordset->GetCollect("password");
//temp=(char*)(_bstr_t)vPW;
if(zslkmm==(_bstr_t)vPW)
{
zslk=1;
}
else
{
AfxMessageBox("密码错误!");
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return zslk;
}
int CDataBase::XSbookinfo(CString bookname,CString zuozhe,CString leibie,CString ISBN,CString chubs,CString cbrq,CString jiage,CString shul,CString strsjwz)
{
m_pRecordset->AddNew();
try
{
m_pRecordset->PutCollect("书名",_bstr_t(bookname));
m_pRecordset->PutCollect("作者",_bstr_t(zuozhe));
m_pRecordset->PutCollect("图书类别",_bstr_t(leibie));
m_pRecordset->PutCollect("ISBN",_bstr_t(ISBN));
m_pRecordset->PutCollect("出版社",_bstr_t(chubs));
m_pRecordset->PutCollect("出版日期",_bstr_t(cbrq));
m_pRecordset->PutCollect("定价",_bstr_t(jiage));
m_pRecordset->PutCollect("总藏书量",_bstr_t(shul));
m_pRecordset->PutCollect("馆内剩余",_bstr_t(shul));
m_pRecordset->PutCollect("书架位置",_bstr_t(strsjwz));
//m_pRecordset->PutCollect("入库时间",_bstr_t(shul));
m_pRecordset->Update();
//AfxMessageBox("添加成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
_variant_t TSGCID;
int GCID;
try
{
TSGCID=m_pRecordset->GetCollect("馆藏ID");
GCID=atoi((char*)(_bstr_t)TSGCID);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return GCID;
}
void CDataBase::SClibrary(int GCID,int sl)
{
int tsid;
CString Ctsid,CGCID;
tsid=GCID*100000;
CGCID.Format("%d",GCID);
for(int i=1;i<=sl;i++)
{
m_pRecordset->AddNew();
tsid=tsid+1;
Ctsid.Format("%d",tsid);
try
{
m_pRecordset->PutCollect("图书ID",_bstr_t(Ctsid));
m_pRecordset->PutCollect("馆藏ID",_bstr_t(CGCID));
m_pRecordset->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
AfxMessageBox("添加成功!");
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
}
CString CDataBase::TSGLADDLB(CString leibie)
{
int n=0;
int T=0,J=0,C=0;
CString TT,JJ,CC;
CString temp,tempT,tempJ,tempC;
try
{
_variant_t vLM;
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vLM= m_pRecordset->GetCollect("类别名称");
if(vLM.vt==VT_NULL)
{
T=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("厅"));
J=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("架"));
C=(atoi)((char*)(_bstr_t)m_pRecordset->GetCollect("层"));
}
else
{
if(leibie==(char*)(_bstr_t)vLM)
{
tempT=(char*)(_bstr_t)m_pRecordset->GetCollect("厅");
tempJ=(char*)(_bstr_t)m_pRecordset->GetCollect("架");
tempC=(char*)(_bstr_t)m_pRecordset->GetCollect("层");
temp=tempT+"-"+tempJ+"-"+tempC;
n=n+1;
}
}
m_pRecordset->MoveNext();///移到下一条记录
}
if(n==0)
{
try
{
m_pRecordset->AddNew();
m_pRecordset->PutCollect("类别名称",_bstr_t(leibie));
if(T<=4)
{
if(J<=30)
{
if(C<=6)
{
C=C+1;
TT.Format("%d",T);
JJ.Format("%d",J);
CC.Format("%d",C);
m_pRecordset->PutCollect("厅",_bstr_t(TT));
m_pRecordset->PutCollect("架",_bstr_t(JJ));
m_pRecordset->PutCollect("层",_bstr_t(CC));
}
else
{
J=J+1;
C=1;
TT.Format("%d",T);
JJ.Format("%d",J);
CC.Format("%d",C);
m_pRecordset->PutCollect("厅",_bstr_t(TT));
m_pRecordset->PutCollect("架",_bstr_t(JJ));
m_pRecordset->PutCollect("层",_bstr_t(CC));
}
}
else
{
T=T+1;
J=1;
C=1;
TT.Format("%d",T);
JJ.Format("%d",J);
CC.Format("%d",C);
m_pRecordset->PutCollect("厅",_bstr_t(TT));
m_pRecordset->PutCollect("架",_bstr_t(JJ));
m_pRecordset->PutCollect("层",_bstr_t(CC));
}
}
else
{
AfxMessageBox("书架不够,请在1号厅新增书架!");
}
m_pRecordset->Update();
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
////////更新位置信息
try
{
_variant_t vSJWZ;
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
vSJWZ= m_pRecordset->GetCollect("类别名称");
if(vSJWZ.vt==VT_NULL)
{
m_pRecordset->PutCollect("厅",_bstr_t(TT));
m_pRecordset->PutCollect("架",_bstr_t(JJ));
m_pRecordset->PutCollect("层",_bstr_t(CC));
m_pRecordset->Update();
}
else
{
m_pRecordset->GetCollect("类别名称");
}
m_pRecordset->MoveNext();
}
}
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return temp;
}
CLby CDataBase::CXlibrary()
{
_variant_t vZCFlag;
CLby Library;
Library.zk=0;
Library.jc=0;
//CString temp,tempZC,tempJC;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vZCFlag = m_pRecordset->GetCollect("是否在库");
if(atoi((char*)(_bstr_t)vZCFlag)==0)
{
//ZC=ZC+1;
Library.zk=Library.zk+1;
}
else
{
//JC=JC+1;
Library.jc=Library.jc+1;
}
m_pRecordset->MoveNext();///移到下一条记录
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
//tempZC.Format("%d",ZC);
//tempJC.Format("%d",JC);
//temp=tempZC+"/"+tempJC;
return Library;
}
int CDataBase::YHGL()
{
int n=0;
_variant_t vNAME,vFlag;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空!");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vNAME=m_pRecordset->GetCollect("username");
if(CPublic::adminID==(_bstr_t)vNAME)
{
vFlag=m_pRecordset->GetCollect("flag");
if(1==atoi((char*)(_bstr_t)vFlag))
{
n=1;
}
}
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
/* m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
*/
return n;
}
void CDataBase::YHGL_TJ(CString name,CString pw1,CString pw2)
{
_variant_t vNAME;
bool add=true;
int YHGL_TJ=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空!");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vNAME=m_pRecordset->GetCollect("username");
if(name==(_bstr_t)vNAME)
{
AfxMessageBox("该用户名已存在!");
add=false;
}
m_pRecordset->MoveNext();
}
if(add==true)
{
if(pw1==pw2)
{
m_pRecordset->AddNew();
try
{
m_pRecordset->PutCollect("username",_bstr_t(name));
m_pRecordset->PutCollect("password",_bstr_t(pw1));
m_pRecordset->Update();
AfxMessageBox("添加新用户成功!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
else
{
AfxMessageBox("两次密码不一致,请重新输入!");
}
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
}
int CDataBase::YHGL_SC(CString name)
{
int n=0;
_variant_t vNAME;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空!");
exit(0);
}
while(!m_pRecordset->adoEOF)
{
vNAME=m_pRecordset->GetCollect("username");
if(name==(_bstr_t)vNAME)
{
//m_pRecordset->Delete();
n=1;
}
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -