/**************************************************************************************************
功能:删除记录
参数:ID,删除的记录的ID
返回:-2,数据库尚未连接
	  -3, 从列表中删除记录失败
	  -4, 数据库删除操作失败
	  0, 成功
作者:佘佳明 2014-11-24
**************************************************************************************************/
int CHistoryTicketItemListMgt::del( const DWORD32 ID )
{
	if(!m_isInit)	return -2;

    if( checkDBConnect() < 0 )      return -4;

    int ret = isIDExist(ID);
	if(ret < 0)		return -5;

    char *sql = (char*)"DELETE FROM t_historyticketitemlist WHERE ID = :f1_ID<unsigned int>";
	try
	{
		otl_stream delStream(1, sql, m_db);
		delStream << ID;

		printf("数据库删除记录 ID: %d\n", ID);

        m_db.commit();
		int ret = delFromList(ID);
		if(ret < 0)		return -3;
	}
	catch (otl_exception& p)
	{
        WLOutDebug("删除票项表操作失败!");

		cerr<<p.msg<<endl;		// print out error message
		cerr<<p.stm_text<<endl; // print out SQL that caused the error
		cerr<<p.sqlstate<<endl; // print out SQLSTATE message
		cerr<<p.var_info<<endl; // print out the variable that caused the error
		return -4;
	}
	return 0;
}
/**************************************************************************************************
功能:更新本地列表记录
参数:ID,记录ID
	  pInputParam,待更新记录
返回:-1,参数错误
	  -2,记录不存在
	  0,成功
作者:李施施 2014-07-30
**************************************************************************************************/
int CHistoryTicketItemListMgt::updateList( const DWORD32 ID, const TTicketItemList *pInputParam )
{
	if(NULL == pInputParam)		return -1;

	int index = isIDExist(ID);
	if (index < 0)				return -2;

    TTicketItemList *temp = getListByIndex(index);
    memcpy(temp, pInputParam, sizeof(TTicketItemList));

	return 0;
}
/**************************************************************************************************
功能:从列表中删除指定ID的记录
参数:ID,ID
返回:>0,该ID存在,删除成功
	  -1,ID不存在
作者:佘佳明 2014-11-24
**************************************************************************************************/
int CHistoryTicketItemListMgt::delFromList( const DWORD32 ID )
{
	int index = isIDExist(ID);
	if(index < 0)		return -1;

	m_pCS->enter();

	for(int i=index; i<m_count-1; i++)
	{
		memcpy(&m_pList[i], &m_pList[i+1], sizeof(TTicketItemList));
	}
	memset(&m_pList[m_count-1], 0x00, sizeof(TTicketItemList));
	m_count--;

	m_pCS->leave();
	return 0;
}
예제 #4
0
파일: enigma.c 프로젝트: duanwenyi/daisy
bool EnigmaSim::checkOCell(){
    bool check = true;
    
    if(isIDExist(ocell.id)){
        if(isIDPending(ocell.id)){
            check = false;
            showOCell("+ERROR: the ID is locked when sent out");
        }else{

            if( isHighQos(ocell.qos) ){
                int p = getFirstPtr(ocell.id);
                if( (dutActive.at(p).id != ocell.id) ||
                    (dutActive.at(p).qos != ocell.qos) ||
                    (dutActive.at(p).payload[0] != ocell.payload[0]) ||
                    (dutActive.at(p).payload[1] != ocell.payload[1]) ||
                    (dutActive.at(p).payload[2] != ocell.payload[2]) ||
                    (dutActive.at(p).payload[3] != ocell.payload[3]) 
                    ){
                    check = false;
                }
                if(check == false){
                    if(isIDUnique(ocell.id)){
                        showOCell("+ERROR: FLIT INFO not correct when ID is unique");
                    }else{
                        showOCell("+ERROR: FLIT INFO not correct when ID is not unique");
                    }
                    showFLIT( dutActive.at(p) );
                }
                
            }else{
                showOCell("+ERROR: FLIT is not high Qos when invoke");
                check = false;
            }
        }
    }else{
        showOCell("+ERROR: the FLIT is not exist");
        check = false;
    }

    return check;
}
/**************************************************************************************************
功能:更新指定ID的记录
参数:ID,ID
      pStation,待更新的记录
返回:-1,参数错误
	  -2, 数据库尚未连接
	  -3,该ID不存在
	  -4, 数据库操作失败
	  0,更新成功
作者:佘佳明 2014-11-24
**************************************************************************************************/
int CHistoryTicketItemListMgt::update( const DWORD32 ID, TTicketItemList *pInputParam )
{
	if(NULL == pInputParam)			return -1;

	if(!m_isInit)					return -2;

    if( checkDBConnect() < 0 )      return -4;

    int ret = isIDExist(ID);
	if(ret < 0)						return -3;

    char *sql = (char*)"UPDATE t_historyticketitemlist SET ticketID=:f1<unsigned int>, \
            ticketActionID=:f2<unsigned int>, \
            `index`=:f3<unsigned int>, \
            itemType=:f4<unsigned int>, \
            itemContent=:f5<char[255]>, \
            isPrint=:f6<unsigned int>, \
            itemShipType=:f7<unsigned int>, \
            subItemIndex=:f8<unsigned int>, \
            isCompleted=:f9<unsigned int>, \
            isTicketItem=:f10<unsigned int>, \
            isKeyItem=:f11<unsigned int>, \
            keyItemIndex=:f12<unsigned int>, \
            isLinkItem=:f13<unsigned int>, \
            linkItemIndex=:f14<unsigned int>, \
            isToKey=:f15<unsigned int>, \
            promptType=:f16<unsigned int> WHERE ID=:f17<unsigned int>";
	try
	{
		otl_stream updateStream(1, sql, m_db);
        updateStream << pInputParam->ticketID;
		updateStream << pInputParam->ticketActionID;
		updateStream << pInputParam->index;
		updateStream << pInputParam->itemType;
		updateStream << pInputParam->itemContent;
		updateStream << pInputParam->isPrint;
		updateStream << pInputParam->itemShipType;
		updateStream << pInputParam->subItemIndex;
        updateStream << pInputParam->isCompleted;
        updateStream << pInputParam->isTicketItem;
        updateStream << pInputParam->isKeyItem;
        updateStream << pInputParam->keyItemIndex;
        updateStream << pInputParam->isLinkItem;
        updateStream << pInputParam->linkItemIndex;
        updateStream << pInputParam->isToKey;
        updateStream << pInputParam->promptType;
		updateStream << ID;

        m_db.commit();
	}
	catch (otl_exception& p)
	{
        WLOutDebug("更新票项表操作失败!");

		cerr<<p.msg<<endl;		// print out error message
		cerr<<p.stm_text<<endl; // print out SQL that caused the error
		cerr<<p.sqlstate<<endl; // print out SQLSTATE message
		cerr<<p.var_info<<endl; // print out the variable that caused the error
		return -4;
	}
	return 0;
}