📄 knowledgedb.cpp
字号:
// KnowledgeDB.cpp: implementation of the CKnowledgeDB class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WiseBoy.h"
#include "KnowledgeDB.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#include "SysMod.h"
#include "AdoDB.h"
#include "SentenceCommon.h"
#define KNOWLEDGEDB_FILENAME "WiseBoyKnowledge.mdb"
CKnowledgeDB::CKnowledgeDB()
{
}
CKnowledgeDB::~CKnowledgeDB()
{
}
BOOL CKnowledgeDB::Open()
{
if (m_pConn != NULL)
return TRUE;
CString strFileName;
strFileName = GetAppPath() + "\\" + KNOWLEDGEDB_FILENAME;
CString strPWD = "xlswiseboy";
return OpenAccessDB(strFileName,strPWD);
}
BOOL CKnowledgeDB::Close()
{
return CloseDB();
}
BOOL CKnowledgeDB::AddWord(CString strWord)
{
if (IsWordExist(strWord))
return TRUE;
CString strSQL = "Insert into Word(WordName) values('" + strWord + "')";
return Execute(strSQL);
}
BOOL CKnowledgeDB::IsWordExist(CString strWord)
{
CString strSQL = "Select * from Word where WordName = '" + strWord + "'";
_RecordsetPtr pRcd = ExecuteRec(strSQL);
if (pRcd == NULL)
return FALSE;
BOOL bRet = FALSE;
if (!pRcd->GetadoEOF())
bRet = TRUE;
pRcd->Close();
return bRet;
}
int CKnowledgeDB::GetWordID(CString strWord)
{
CString strSQL = "Select WordID from Word where WordName = '" + strWord + "'";
_RecordsetPtr pRcd = ExecuteRec(strSQL);
if (pRcd == NULL)
return -1;
if (pRcd->GetadoEOF())
{
pRcd->Close();
return -1;
}
CString strWordID = GetFieldValue(pRcd,"WordID");
int nWordID = atoi(strWordID);
pRcd->Close();
return nWordID;
}
CString CKnowledgeDB::GetWord(int nWordID)
{
CString strWordID;
strWordID.Format ("%d",nWordID);
CString strSQL = "Select WordName from Word where WordID = " + strWordID;
_RecordsetPtr pRcd = ExecuteRec(strSQL);
if (pRcd == NULL)
return "";
if (pRcd->GetadoEOF())
{
pRcd->Close();
return "";
}
CString strWordName = GetFieldValue(pRcd,"WordName");
pRcd->Close();
return strWordName;
}
BOOL CKnowledgeDB::AddSentence(CString strSentence)
{
if (!IsStatementSentence(strSentence))
return TRUE;
CString strSubject;
CString strStatement;
SpltSentence(strSentence,strSubject,strStatement);
return AddSentence(strSubject,strStatement);
}
BOOL CKnowledgeDB::AddSentence(CString strSubject,CString strStatement)
{
if (IsSentenceExist(strSubject,strStatement))
return TRUE;
AddWord(strSubject);
AddWord(strStatement);
int nSubID;
int nStatID;
nSubID = GetWordID(strSubject);
nStatID = GetWordID(strStatement);
if (nSubID < 0 || nStatID < 0)
return FALSE;
CString strSubID;
CString strStatID;
strSubID.Format ("%d",nSubID);
strStatID.Format ("%d",nStatID);
CString strSQL = "insert into Sentence(SubjectID,StatementID) values(" + strSubID + "," + strStatID + ")";
return ExecuteRec(strSQL);
}
BOOL CKnowledgeDB::IsSentenceExist(CString strSentence)
{
if (!IsStatementSentence(strSentence))
return TRUE;
CString strSubject;
CString strStatement;
SpltSentence(strSentence,strSubject,strStatement);
return IsSentenceExist(strSubject,strStatement);
}
BOOL CKnowledgeDB::IsSentenceExist(CString strSubject,CString strStatement)
{
int nSubID;
int nStatID;
nSubID = GetWordID(strSubject);
nStatID = GetWordID(strStatement);
if (nSubID < 0 || nStatID < 0)
return FALSE;
CString strSubID;
CString strStatID;
strSubID.Format ("%d",nSubID);
strStatID.Format ("%d",nStatID);
CString strSQL = "Select * from Sentence where SubjectID = " + strSubID + " and StatementID = " + strStatID;
_RecordsetPtr pRcd = ExecuteRec(strSQL);
if (pRcd == NULL)
return FALSE;
if (pRcd->GetadoEOF())
{
pRcd->Close();
return FALSE;
}
pRcd->Close();
return TRUE;
}
int CKnowledgeDB::GetSubjectStatement(CString strSubject,CStringArray& arrayStatement)
{
int nSubID = GetWordID(strSubject);
if (nSubID < 0)
return -1;
CString strSubID;
strSubID.Format ("%d",nSubID);
CString strSQL = "select StatementID from sentence where SubjectID = " + strSubID;
_RecordsetPtr pRcd = ExecuteRec(strSQL);
if (pRcd == NULL)
return -1;
CDWordArray arrayStatID;
while (!pRcd->GetadoEOF())
{
CString strStatID = GetFieldValue(pRcd,"StatementID");
int nStatID = atoi(strStatID);
arrayStatID.Add (nStatID);
pRcd->MoveNext();
}
pRcd->Close();
int nCount = arrayStatID.GetSize();
for (int i=0;i<nCount;i++)
{
CString strStatement = GetWord(arrayStatID[i]);
arrayStatement.Add (strStatement);
}
return nCount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -