📄 dbinterface.cpp
字号:
// DBInterface.cpp: implementation of the CDBInterface class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DBInterface.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDBInterface::CDBInterface()
{
m_pConn = NULL;
m_bConnected = FALSE;
}
CDBInterface::~CDBInterface()
{
if ( m_pConn )
{
delete m_pConn;
m_pConn = NULL;
}
}
BOOL CDBInterface::InitDatabase( LPCTSTR szName, LPCTSTR szHost, LPCTSTR szUser, LPCTSTR szPswd )
{
m_strDBname = szName;
m_strDBhost = szHost;
m_strDBuser = szUser;
m_strDBpswd = szPswd;
m_pConn = new sql_connection_c( (LPTSTR)szName, (LPTSTR)szHost,
(LPTSTR)szUser, (LPTSTR)szPswd );
if ( m_pConn == NULL ) {
return FALSE;
}
m_pQuery = new sql_query_c(m_pConn);
if ( !m_pQuery )
{
delete m_pConn;
m_pConn = NULL;
return FALSE;
}
m_bConnected = TRUE;
return TRUE;
}
BOOL CDBInterface::GetAllSchedules( CMap<DWORD, DWORD, CSchedule*, CSchedule*> *pScheMap )
{
CString strSql = "select sche_id,sche_type,sche_starttime,sche_stoptime,sche_name,sche_desc,\
sche_mip,sche_mport,sche_lastupdate from tbl_sche";
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pScheSet = NULL;
pScheSet = m_pQuery->store();
if ( pScheSet == NULL ) return FALSE;
sql_row_c row_sche;
int nScheCount = (int)(pScheSet->n_rows());
for ( int i=0; i<nScheCount; i++ )
{
row_sche = pScheSet->fetch_row();
CSchedule *pNewSche = new CSchedule;
pNewSche->m_nScheID = atoi(row_sche[0]);
pNewSche->m_nScheType = atoi(row_sche[1]);
pNewSche->m_nStartime = GetTimeFromString(row_sche[2]);
pNewSche->m_nStoptime = GetTimeFromString(row_sche[3]);
pNewSche->m_strName = (LPCTSTR)(row_sche[4]);
pNewSche->m_strDesc = (LPCTSTR)(row_sche[5]);
pNewSche->m_strMCastIP = (LPCTSTR)(row_sche[6]);
pNewSche->m_nMCastPort = atoi(row_sche[7]);
pNewSche->m_nLastUpdate = atoi(row_sche[8]);
// Get sche's playlist
strSql.Format( "select playlist_id,vidsrc_id,play_opt,play_value,play_repeatcount from tbl_scheplay \
where sche_id=%d order by playlist_id", pNewSche->m_nScheID );
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pPlaySet = NULL;
pPlaySet = m_pQuery->store();
if ( pPlaySet == NULL ) return FALSE;
int nVidCount = (int)(pPlaySet->n_rows());
sql_row_c row_play;
CPlayItem *pNewItems = NULL, *pBack = NULL, *pItem;
for ( int j=0; j<nVidCount; j++ )
{
row_play = pPlaySet->fetch_row();
pItem = new CPlayItem();
pItem->m_nPlayItemID = atoi(row_play[0]);
pItem->m_nVidSrcID = atoi(row_play[1]);
pItem->m_nPlayOpt = atoi(row_play[2]);
pItem->m_nPlayValue = atoi(row_play[3]);
pItem->m_nRepeatCount = atoi(row_play[4]);
// Get play's vidsrc
strSql.Format( "select vidsrc_type,vidsrc_name,vidsrc_path,vidsrc_formatfile from tbl_vidsrc \
where vidsrc_id=%d", pItem->m_nVidSrcID );
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pVidsrcSet = NULL;
pVidsrcSet = m_pQuery->store();
if ( pVidsrcSet == NULL ) return FALSE;
if ( pVidsrcSet->n_rows() <= 0 ) {
return FALSE;
}
sql_row_c row_vidsrc = pVidsrcSet->fetch_row();
pItem->m_nVidSrcType = atoi(row_vidsrc[0]);
pItem->m_strSourceName = (LPCTSTR)(row_vidsrc[1]);
pItem->m_strSourcePath = (LPCTSTR)(row_vidsrc[2]);
pItem->m_strFormatFile = (LPCTSTR)(row_vidsrc[3]);
m_pQuery->free_result( pVidsrcSet );
if ( pNewItems == NULL ) {
pNewItems = pItem;
}
if ( pBack ) {
pBack->m_pNext = pItem;
}
pBack = pItem;
}
// Set to the sche's playlist and Add sche to scheMap
pNewSche->SetPlayList( pNewItems );
pNewSche->addRef();
pScheMap->SetAt( pNewSche->m_nScheID, pNewSche );
m_pQuery->free_result( pPlaySet );
}
m_pQuery->free_result( pScheSet );
return TRUE;
}
CPlayItem* CDBInterface::GetVidSrcs()
{
CString strSql = "select vidsrc_id,vidsrc_type,vidsrc_name,\
vidsrc_path,vidsrc_formatfile from tbl_vidsrc";
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pVidSet = NULL;
pVidSet = m_pQuery->store();
if ( pVidSet == NULL ) return FALSE;
CPlayItem *pRt = NULL, *pItem, *pBack = NULL;
sql_row_c row_vidsrc;
int nVidCount = (int)(pVidSet->n_rows());
for ( int i=0; i<nVidCount; i++ )
{
row_vidsrc = pVidSet->fetch_row();
pItem = new CPlayItem;
pItem->m_nVidSrcID = atoi(row_vidsrc[0]);
pItem->m_nVidSrcType = atoi(row_vidsrc[1]);
pItem->m_strSourceName = (LPCTSTR)(row_vidsrc[2]);
pItem->m_strSourcePath = (LPCTSTR)(row_vidsrc[3]);
pItem->m_strFormatFile = (LPCTSTR)(row_vidsrc[4]);
pItem->m_pNext = NULL;
if ( pRt == NULL ) {
pRt = pItem;
}
if ( pBack ) {
pBack->m_pNext = pItem;
}
pBack = pItem;
}
m_pQuery->free_result( pVidSet );
return pRt;
}
CChannel* CDBInterface::GetChannels()
{
CString strSql = "select channel_id,channel_ip,channel_port from tbl_channels";
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pSet = NULL;
pSet = m_pQuery->store();
if ( pSet == NULL ) return FALSE;
CChannel *pRt = NULL, *pItem, *pBack = NULL;
sql_row_c row_c;
int nCount = (int)(pSet->n_rows());
for ( int i=0; i<nCount; i++ )
{
row_c = pSet->fetch_row();
pItem = new CChannel;
pItem->m_nChannelIndex = atoi(row_c[0]);
pItem->m_strChannelIP = (LPCTSTR)(row_c[1]);
pItem->m_nChannelPort = atoi(row_c[2]);
pItem->m_pNext = NULL;
if ( pRt == NULL ) {
pRt = pItem;
}
if ( pBack ) {
pBack->m_pNext = pItem;
}
pBack = pItem;
}
m_pQuery->free_result( pSet );
return pRt;
}
CChannel * CDBInterface::GetChannelList()
{
CString strSql = "select channel_id,channel_ip,channel_port from tbl_channels";
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pChanfSet = NULL;
pChanfSet = m_pQuery->store();
if ( pChanfSet == NULL ) return FALSE;
CChannel *pRt = NULL, *pItem,*pBack = NULL;
sql_row_c row_chan;
int nChanCount = (int)(pChanfSet->n_rows());
for ( int i=0; i<nChanCount; i++ )
{
row_chan = pChanfSet->fetch_row();
pItem = new CChannel;
pItem->m_nChannelIndex =(row_chan[0]);
pItem->m_strChannelIP= (LPCTSTR)(row_chan[1]);
pItem->m_nChannelPort= (row_chan[2]);
if ( pRt == NULL ) {
pRt = pItem;
}
pItem->m_pNext = NULL;
if ( pBack ) {
pBack->m_pNext = pItem;
}
pBack = pItem;
}
m_pQuery->free_result( pChanfSet );
return pRt;
}
ExpertListItem* CDBInterface::GetExpertList()
{
CString strSql = "select prof_id,prof_name,prof_pswd,\
prof_auth,prof_rank from tbl_prof";
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pProfSet = NULL;
pProfSet = m_pQuery->store();
if ( pProfSet == NULL ) return FALSE;
ExpertListItem *pRt = NULL, *pItem,*pBack = NULL;
sql_row_c row_prof;
int nProfCount = (int)(pProfSet->n_rows());
for ( int i=0; i<nProfCount; i++ )
{
row_prof = pProfSet->fetch_row();
pItem = new ExpertListItem;
pItem->ExpertID = (LPCTSTR)(row_prof[0]);
pItem->ExpertName = (LPCTSTR)(row_prof[1]);
pItem->ExpertPW = (LPCTSTR)(row_prof[2]);
pItem->ExpertAuthority = (row_prof[3]);
pItem->ExpertRank= (row_prof[4]);
if ( pRt == NULL ) {
pRt = pItem;
}
pItem->pNext = NULL;
if ( pBack ) {
pBack->pNext = pItem;
}
pBack = pItem;
}
m_pQuery->free_result( pProfSet );
return pRt;
}
WordListShowItem *CDBInterface::GetScheWord(int n)
{
CString strSql;
strSql.Format("select sche_id,word_type,word_content from tbl_sche_wordlist where sche_id=%d", n);
if ( !m_pQuery->execute((LPTSTR)(LPCTSTR)strSql) ){
return FALSE;
}
sql_result_c *pProfSet = NULL;
pProfSet = m_pQuery->store();
if ( pProfSet == NULL ) return FALSE;
WordListShowItem *pRt = NULL, *pItem,*pBack = NULL;
sql_row_c row_prof;
int nProfCount = (int)(pProfSet->n_rows());
for ( int i=0; i<nProfCount; i++ )
{
row_prof = pProfSet->fetch_row();
pItem = new WordListShowItem;
pItem->sch_id = (row_prof[0]);
pItem->WordType = (row_prof[1]);
pItem->WordContent = (LPCTSTR)(row_prof[2]);
if ( pRt == NULL ) {
pRt = pItem;
}
pItem->pnext = NULL;
if ( pBack ) {
pBack->pnext = pItem;
}
pBack = pItem;
}
m_pQuery->free_result( pProfSet );
return pRt;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -