📄 database.cpp
字号:
int CDataBase::HexToInt(char c)
{
int num;
switch(c) {
case '0':
num = 0;
break;
case '1':
num = 1;
break;
case '2':
num = 2;
break;
case '3':
num = 3;
break;
case '4':
num = 4;
break;
case '5':
num = 5;
break;
case '6':
num = 6;
break;
case '7':
num = 7;
break;
case '8':
num = 8;
break;
case '9':
num = 9;
break;
case 'A':
num = 10;
break;
case 'B':
num = 11;
break;
case 'C':
num = 12;
break;
case 'D':
num = 13;
break;
case 'E':
num = 14;
break;
case 'F':
num = 15;
break;
default:
num = -1;
break;
}
return num;
}
BOOL CDataBase::AddCipherKey(char *pID,char *pubkey, char *prikey)//完成CipherKey(pubkey,prikey)信息插入authen表
{
// CString str;
// CTime tm;
// tm=CTime::GetCurrentTime();//获取系统时间
// str=tm.Format("%Y年%m月%d日%X");
//// AfxMessageBox(str);
time_t ltime;
time(<ime);
CString sql;
InitDataBase();
try
{
sql.Format("insert into authen (PeerID,PublicKey,PrivteKey,RegTime) values('%s','%s','%s','%ld')",pID,pubkey,prikey,ltime);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return TRUE;
}
CString CDataBase::InquiryPubkey(char *pID)//查询公钥成功返回pubkey
{
CString sql;
InitDataBase();
_variant_t vPubkey;
CString pubkey;
try
{
sql.Format("select * from authen where PeerID='%s'",pID);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vPubkey = m_pRecordset->GetCollect("PublicKey");
pubkey=(LPCTSTR)(_bstr_t)vPubkey;
return pubkey;
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return pubkey;
}
CString CDataBase::InquiryPrikey(char *pID)//查询私钥
{
CString sql;
InitDataBase();
_variant_t vPubkey;
CString prikey;
try
{
sql.Format("select * from authen where PeerID='%s'",pID);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vPubkey = m_pRecordset->GetCollect("PrivteKey");
prikey=(LPCTSTR)(_bstr_t)vPubkey;
return prikey;
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return prikey;
}
BOOL CDataBase::DelPubPriKey(char *pID)//删除公私钥对
{
CString sql;
// InitDataBase();
try
{
sql.Format("delete from authen where PeerID='%s'",pID);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return TRUE;
}
BOOL CDataBase::UpdataPubPriKey(char *pID, char *pubkey, char *prikey)//更新pubkey,prikey;
{
// CString str;
// CTime tm;
// tm=CTime::GetCurrentTime();//获取系统时间
// str=tm.Format("%Y年%m月%d日%X");
time_t ltime;
time(<ime);
CString sql;
InitDataBase();
try
{
sql.Format("update authen set publickey='%s',privtekey='%s',UpdataTime='%ld' where peerid='%s'",pubkey,prikey,ltime,pID);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
m_pConnection->Close();
return TRUE;
}
CString CDataBase::VariantToCString(VARIANT var)
{
CString strValue;
_variant_t var_t;
_bstr_t bst_t;
time_t cur_time;
CTime time_value;
COleCurrency var_currency;
switch(var.vt)
{
case VT_EMPTY:
strValue=_T("");
break;
case VT_UI1:
strValue.Format("%d",var.bVal);
break;
case VT_I2:
strValue.Format("%d",var.iVal);
break;
case VT_I4:
strValue.Format("%d",var.lVal);
break;
case VT_R4:
strValue.Format("%f",var.fltVal);
break;
case VT_R8:
strValue.Format("%f",var.dblVal);
break;
case VT_CY:
var_currency=var;
strValue=var_currency.Format(0);
break;
case VT_BSTR:
var_t=var;
bst_t=var_t;
strValue.Format("%s",(const char* )bst_t);
break;
case VT_NULL:
strValue=_T("");
break;
case VT_DATE:
cur_time=var.date;
time_value=cur_time;
strValue=time_value.Format("%A,%B,%d,%Y");
break;
case VT_BOOL:
strValue.Format("%d",var.boolVal);
break;
default:
strValue=_T("");
break;
}
return strValue;
}
int CDataBase::InquiryTrustValue(CString pid)
{
CString sql;
InitDataBase();
_variant_t vTrustValue;
int trust_value=0;
try
{
sql.Format("select * from peer where pid='%s'",pid);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vTrustValue = m_pRecordset->GetCollect("TrustValue");
trust_value=vTrustValue.iVal;
return trust_value;
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return trust_value;
}
BOOL CDataBase::UpdataTrustValue(CString pid, int trustvalue)
{
CString sql;
InitDataBase();
_variant_t vTrustValue;
int trust_value=0;
try
{
sql.Format("select * from peer where pid='%s'",pid);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vTrustValue = m_pRecordset->GetCollect("TrustValue");
trust_value=vTrustValue.iVal;
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
if(0==trust_value)
{
try
{
sql.Format("update peer set TrustValue=%d where pid='%s'",trustvalue,pid);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
else
{
try
{
sql.Format("update peer set TrustValue=%d where pid='%s'",(trustvalue+trust_value)/2,pid);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
// m_pConnection->Close();
return TRUE;
}
CString CDataBase::CountVirusValue(char *fileid)
{
CString sql;
int sum_all=0;
int vir_num=0;
// _variant_t vCount_all;
InitDataBase();
try
{
sql.Format("select * from filepeer where fid='%s' and (virusid_1=1 or virusid_2=1)",fileid);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
vir_num++;
m_pRecordset->MoveNext();
}
// m_pRecordset->Close();
// m_pConnection->Close();
sql.Format("select * from filepeer where fid='%s'",fileid);
bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
sum_all++;
m_pRecordset->MoveNext();
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
CString str;
str.Format("%d",vir_num);
sql.Format("%d",sum_all);
str+='/';
str+=sql;
return str;
}
BOOL CDataBase::AddVirusInfo(VirusInfo vInfo)
{
CString sql;
time_t ltime;
time(<ime);
InitDataBase();
try
{ //完成登陆信息(PeerID,IP,PORT)数据库表信息的插入peer表
sql.Format("insert into filepeer (fid,pid,VirusID_1,VirusID_2,VirusID,VirusName,VirusType,FindTime) values('%s','%s',%d,%d,%d,'%s',%d,%ld)",vInfo.fileID,vInfo.PID,vInfo.VirusID_1,vInfo.VirusID_2,vInfo.VirusID,vInfo.VirusName,vInfo.VirusType,ltime);
BSTR bSql = sql.AllocSysString();
if(!Excute(bSql))
return FALSE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
m_pConnection->Close();
return TRUE;
}
BOOL CDataBase::InquiryPIDtrust(CString ip, PeerIDtrust *ptrust)
{
CString sql;
_variant_t vTrustValue;
_variant_t vPid;
InitDataBase();
try
{
sql.Format("select * from peer where status=1 and ip='%s'",ip);
BSTR bSql = sql.AllocSysString();
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(bSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vPid = m_pRecordset->GetCollect("pid");
vTrustValue = m_pRecordset->GetCollect("TrustValue");
ptrust->val=vTrustValue.lVal;
strcpy(ptrust->Pid,(LPCTSTR)(_bstr_t)vPid);
return TRUE;
}
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
// m_pConnection->Close();
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -