⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbinterface.cpp

📁 视频播放控制器程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -