亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c_share_info.cpp

?? 一個基于HP機器的共享內存的實現, 很使用,大型系統,資料管理非常有用,只要將資料用sql語句配置好,裝載共享內存即可,是一個已經在用的大型系統的共享內存程序,非常有價值.
?? CPP
字號:
/***********************************************************************
 * Module:  c_share_info.cpp
 * Author:  Administrator
 * Modified: 2005年9月15日 10:37:23
 * Purpose: Implementation of the class c_share_info
 * Comment: 共享內存信息配置類. 用于將數據庫中查詢到的信息進行整理, 保存在各個結構中去。并可以進行查詢。要提供查找的方法.這是一個基礎類, 其它很多模塊都要用到。
 ***********************************************************************/

#include "c_share_info.h"

//按MEM_AREA_NO排序的比較
bool lessByMEM_AREA_NO(const SHARE_MEM_INFO& tmp1,const SHARE_MEM_INFO& tmp2)
{
	return tmp1.mem_area_no < tmp2.mem_area_no; 
}

//按SHARE_AREA_ID排序的比較
bool lessBySHARE_AREA_ID(const SHARE_MEM_INFO& tmp1,const SHARE_MEM_INFO& tmp2)
{
	return tmp1.share_area_id < tmp2.share_area_id;
}

//按MEM_NAME排序的比較
bool lessByName1(const SHARE_MEM_INFO& tmp1,const SHARE_MEM_INFO& tmp2)
{
	int t = strcmp(tmp1.mem_name , tmp2.mem_name);
	return t<0?1:0;   
}

bool lessByName2(const SELECT_SQL_INFO& tmp1,const SELECT_SQL_INFO& tmp2)
{
	int t = strcmp(tmp1.mem_name , tmp2.mem_name);
	return t<0?1:0;   
}

bool lessByName3(const MEM_FIELD_INFO& tmp1,const MEM_FIELD_INFO& tmp2)
{
	int t = strcmp(tmp1.mem_name , tmp2.mem_name);
	return t<0?1:0;   
}

//按SELECT_NO和FIELD_SEQ排序的比較
bool lessBySELECT_NOandFIELD_SEQ( const MEM_FIELD_INFO& tmp1,const MEM_FIELD_INFO& tmp2)
{
	if( tmp1.select_no == tmp2.select_no )
		return tmp1.field_seq < tmp2.field_seq;
	else
		return tmp1.select_no < tmp2.select_no;
}

//只以SELECT_NO的比較
bool lessBySELECT_NO( const MEM_FIELD_INFO& tmp1,const MEM_FIELD_INFO& tmp2)
{
	return tmp1.select_no < tmp2.select_no;
}

bool lessEventAttrByName(const EVENT_ATTR& tmp1,const EVENT_ATTR& tmp2)
{
	int t = strcmp(tmp1.attr_name, tmp2.attr_name); 
	return t<0?1:0;   
}

////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getMemInfo()
// Purpose:    Implementation of c_share_info::getMemInfo()
// Return:     share_mem_info*
// Comment:    根據MEM_AREA_NO排序,由MEM_AREA_NO快速得到對應的內存塊信息
////////////////////////////////////////////////////////////////////////
SHARE_MEM_INFO* c_share_info::getMemInfo(int t_mem_area_no)
{
	sort(v_share_info.begin(), v_share_info.end(),  lessByMEM_AREA_NO);
	SHARE_MEM_INFO search;
	search.mem_area_no = t_mem_area_no;
	vector<SHARE_MEM_INFO>::const_iterator vi = lower_bound(v_share_info.begin(), v_share_info.end(), search, lessByMEM_AREA_NO );

    if ( (vi == v_share_info.end()) || t_mem_area_no != (vi)->mem_area_no )
    {
        return NULL;
    }
    return (SHARE_MEM_INFO*)&*vi;
}

////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getMemInfo()
// Purpose:    Implementation of c_share_info::getMemInfo()
// Return:     share_mem_info*
// Comment:    根據MEM_NAME排序,由MEM_NAME快速得到對應內存塊信息
////////////////////////////////////////////////////////////////////////
SHARE_MEM_INFO* c_share_info::getMemInfo( const char* t_mem_name )
{
	sort(v_share_info.begin(), v_share_info.end(),  lessByName1);
	SHARE_MEM_INFO search;
	strcpy(search.mem_name,t_mem_name);
	vector<SHARE_MEM_INFO>::const_iterator vi = lower_bound(v_share_info.begin(), v_share_info.end(), search, lessByName1);
	if( ( vi == v_share_info.end()) || strcmp(search.mem_name,(vi)->mem_name) != 0)
	{
		return  NULL;
	}
	return (SHARE_MEM_INFO*)&*vi;
}


////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getMemInfoByShareAreaId()
// Purpose:    Implementation of c_share_info::getMemInfoByShareAreaId()
// Retrun      void
// Comment:    根據SHARE_AREA_ID排序,由SHARE_AREA_ID快速得到一組內存塊信息,存入v_mem_out中
////////////////////////////////////////////////////////////////////////
void c_share_info::getMemInfoByShareAreaId(int t_share_area_id, vector<SHARE_MEM_INFO>& v_mem_out){
	 
	 sort(v_share_info.begin(), v_share_info.end(),lessBySHARE_AREA_ID);
	 
	 SHARE_MEM_INFO search;
	 search.share_area_id = t_share_area_id;
	 
	 	vector<SHARE_MEM_INFO>::iterator item;
	typedef vector<SHARE_MEM_INFO>::iterator SHARE_MEM_INFO_ITERATOR;
	pair<SHARE_MEM_INFO_ITERATOR, SHARE_MEM_INFO_ITERATOR> p_pair;
	
	p_pair = equal_range( v_share_info.begin(), v_share_info.end(), search, lessBySHARE_AREA_ID );
	v_mem_out.clear();
	if( p_pair.first != p_pair.second )
	{		
		for( item = p_pair.first; item< p_pair.second; item++)
		{
			v_mem_out.push_back( *(item) );
		}
	}
	
}

////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getMemCountByShareAreaId()
// Purpose:    Implementation of c_share_info::getMemCountByShareAreaId()
// Retrun      int
// Comment:    根據SHARE_AREA_ID排序,由SHARE_AREA_ID快速得到其含有的內存塊數
////////////////////////////////////////////////////////////////////////
int c_share_info::getMemCountByShareAreaId(int t_share_area_id)
{
	sort(v_share_info.begin(), v_share_info.end(),lessBySHARE_AREA_ID);
	SHARE_MEM_INFO search;
	search.share_area_id = t_share_area_id;
	int amount = 0;
	vector<SHARE_MEM_INFO>::iterator item;
	typedef vector<SHARE_MEM_INFO>::iterator SHARE_MEM_INFO_ITERATOR;
	pair<SHARE_MEM_INFO_ITERATOR, SHARE_MEM_INFO_ITERATOR> p_pair;
	
	p_pair = equal_range( v_share_info.begin(), v_share_info.end(), search, lessBySHARE_AREA_ID );
	
	if( p_pair.first != p_pair.second )
	{		
		for( item = p_pair.first; item< p_pair.second; item++)
		{
			amount++;
		}
		
	}
	return amount;
}
////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getSqlInfo()
// Purpose:    Implementation of c_share_info::getSqlInfo()
// Return:     void
// Comment:    根據MEM_NAME排序,由MEM_NAME得到對應內存塊中含有的所有SQL信息,存入v_sql_out中
////////////////////////////////////////////////////////////////////////

void c_share_info::getSqlInfo( const char* t_mem_name, vector<SELECT_SQL_INFO>& v_sql_out )
{
  sort(v_sql_info.begin(),v_sql_info.end(),lessByName2);
  SELECT_SQL_INFO search;

  strcpy( search.mem_name, t_mem_name );

	vector<SELECT_SQL_INFO>::iterator item;
	typedef vector<SELECT_SQL_INFO>::iterator SELECT_SQL_INFO_ITERATOR;
	pair<SELECT_SQL_INFO_ITERATOR, SELECT_SQL_INFO_ITERATOR> p_pair;
	
	v_sql_out.clear();
	
	p_pair = equal_range( v_sql_info.begin(), v_sql_info.end(), search, lessByName2 );
	if( p_pair.first != p_pair.second )
	{
		
		for( item = p_pair.first; item< p_pair.second; item++)
		{
			v_sql_out.push_back( *(item) );
		}
	}

}
////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getFieldInfo()
// Purpose:    Implementation of c_share_info::getFieldInfo()
// Return:     void
// Comment:    根據SELECT_NO和FIELD_SEQ排序,由SELECT_NO得到對應SQL中所有的字段信息,存入v_field_out中
////////////////////////////////////////////////////////////////////////
void c_share_info::getFieldInfo(  const int t_select_no, vector <MEM_FIELD_INFO>& v_field_out )
{
	sort(v_field_info.begin(),v_field_info.end(),lessBySELECT_NOandFIELD_SEQ);
	MEM_FIELD_INFO search;

	search.select_no = t_select_no; 

	vector<MEM_FIELD_INFO>::iterator item;
	typedef vector<MEM_FIELD_INFO>::iterator MEM_FIELD_INFO_ITERATOR;
	pair<MEM_FIELD_INFO_ITERATOR, MEM_FIELD_INFO_ITERATOR> p_pair;
	
	v_field_out.clear();
	
	p_pair = equal_range( v_field_info.begin(), v_field_info.end(), search, lessBySELECT_NO );
	if( p_pair.first != p_pair.second )
	{
		
		for( item = p_pair.first; item< p_pair.second; item++)
		{
			v_field_out.push_back( *(item) );
		}
	}
}

////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::getShareID()
// Purpose:    Implementation of c_share_info::getShareID()
// Return:     int
// Comment:    通過訪問數據庫根據共享內存的名字得到共享內存的ID
////////////////////////////////////////////////////////////////////////
int c_share_info::getShareID(const char* t_share_area_name)
{
	int share_area_id = -1 ;
	try{
	
	string sql = " select share_area_id from share_area where share_area_name = :v " ;
	g_statement.setSQLString(sql);
	g_statement << t_share_area_name ;
	g_statement.execute();
	g_statement >> share_area_id;
	return share_area_id;
  }catch(Exception ex)
  { cout << ex.what() << endl;}
  	
}

////////////////////////////////////////////////////////////////////////
// Name:       c_share_info::loadAllInfo()
// Purpose:    Implementation of c_share_info::loadAllInfo()
// Return:     void
// Comment:    將所有配置信息加載,分別存入v_share_info,v_sql_info和v_field_info中
////////////////////////////////////////////////////////////////////////
void c_share_info::loadAllInfo()
{ 
	v_share_info.clear();
	v_sql_info.clear();
	v_field_info.clear();
	try 
	{
   
//查詢共享內存塊的信息
		string sql = " select  a.MEM_AREA_NO,"
							   " a.MEM_NAME,"
						     " a.BYTE_SIZE,"
							   " a.SHARE_AREA_ID,"
							   " a.MEM_SEQ ,"
							   " b.SHARE_AREA_NAME,"
							   " a.APPLICATION,"
							   " a.BLOCK_SIZE,"
							   " a.MEM_KIND,"
							   " a.INDEX_KIND,"
							   " a.FILE_NAME,"
							   " a.ELEMENT_SIZE,"
							   " a.ADDITION_SIZE"
							   " from MEM_AREA_NO a, SHARE_AREA b where a.SHARE_AREA_ID = b.SHARE_AREA_ID";

		g_statement.setSQLString(sql);
		g_statement.execute();
		SHARE_MEM_INFO temp1;
		char field2[400];
    temp1.field_count = 0;//field_count's default value is 0
		while( g_statement 
				>> temp1.mem_area_no 
				>> temp1.mem_name 
				>> temp1.mem_size 
				>> temp1.share_area_id 
				>> temp1.share_area_seq
				>> temp1.share_area_name
				>> temp1.application_kind 
				>> temp1.block_size 
				>> temp1.mem_kind 
				>> temp1.index_kind 
				>> temp1.file_name 
				>> temp1.element_size
				>> temp1.addition_size)
		{
      		v_share_info.push_back(temp1);
		}

//查詢sql語句的信息
		sql = " select a.MEM_AREA_NO,"
						" a.MEM_NAME,"
						" b.CONDITION,"
						" b.FROM_SQL,"
						" b.SELECT_NO"
						" from MEM_AREA_NO a,SELECT_NO b "
						" where a.MEM_AREA_NO = b.MEM_AREA_NO ";

		g_statement.setSQLString( sql );
		g_statement.execute();

		SELECT_SQL_INFO temp2;
		strcpy(temp2.sql_str,"");//sql_str's default value is ""
		while( g_statement 
		        >> temp2.mem_area_no 
						>> temp2.mem_name 
						>> temp2.condition
						>> temp2.from_sql
						>> temp2.select_no)
		{
	    		v_sql_info.push_back(temp2);	
		}

    int length;
    sql = " select a.MEM_AREA_NO,"
					" a.MEM_NAME,"
					" d.TYPE_SIZE,"
					" c.DATA_TYPE_ID,"
					" c.EVENT_ATTR_ID,"
					" c.SQL_STMT,"
					" c.SELECT_NO,"
					" c.FIELD_SEQ, "
					" c.FIELD_SIZE "
					" from MEM_AREA_NO a,SELECT_NO b,MEM_FIELD c,DATA_TYPE d"
					" where a.MEM_AREA_NO = b.MEM_AREA_NO and b.SELECT_NO = c.SELECT_NO and c.data_TYPE_ID = d.DATA_TYPE_ID " ;
		g_statement.setSQLString( sql );
		g_statement.execute();
		MEM_FIELD_INFO temp3;
		temp3.field_pos = 0;//field_pos's default value is 0
		while( g_statement 
		        >> temp3.mem_area_no 
						>> temp3.mem_name 
						>> temp3.field_size 
						>> temp3.field_type 
						>> temp3.event_attr_id
						>> temp3.field_sql
						>> temp3.select_no
						>> temp3.field_seq
						>> length)
		{	
			if( temp3.field_type == 1 )
			{
				temp3.field_size = length;
			}
			v_field_info.push_back(temp3);	
		}

		sql = "select event_attr_id, lower(en_name) from event_attr order by 2" ;
		g_statement.setSQLString( sql );
		g_statement.execute();
		EVENT_ATTR tmp4;
		v_event_attr.clear();
		while( g_statement 
		        >> tmp4.attr_id
		        >> tmp4.attr_name)
		{	
			v_event_attr.push_back(tmp4);	
		}
	
	}
	catch ( Exception& ex )
	{
		cout<<ex.what()<<endl;
	}
}

int c_share_info::getEventAttrIDByName( const char* event_name )
{
	EVENT_ATTR tmp;
	strcpy( tmp.attr_name, event_name );
	vector<EVENT_ATTR>::iterator item;
	item = lower_bound( v_event_attr.begin(), v_event_attr.end(), tmp, lessEventAttrByName );
	if( item == v_event_attr.end() || ( strcmp( item->attr_name, event_name ) != 0 ) )
		return -1;
	else
		return item->attr_id;
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波波电影院一区二区三区| 老司机免费视频一区二区| 欧美激情自拍偷拍| 久久看人人爽人人| 国产欧美日韩激情| 国产精品视频在线看| 日本一区二区视频在线观看| 中文字幕欧美日韩一区| 国产精品丝袜久久久久久app| 欧美激情一区二区在线| 国产精品网站在线| 中文字幕日韩av资源站| 亚洲视频一区在线观看| 一区二区三区久久| 日韩高清在线不卡| 国产精品自在在线| 94-欧美-setu| 欧美精品色综合| 337p日本欧洲亚洲大胆精品| 久久精品男人的天堂| 亚洲天堂2014| 日韩av不卡一区二区| 国产毛片精品国产一区二区三区| 成人午夜激情片| 91黄视频在线| 精品国精品自拍自在线| 国产女人18毛片水真多成人如厕 | 国产尤物一区二区在线| 国产乱码精品一品二品| av激情综合网| 91精品国产综合久久久蜜臀粉嫩| 久久综合九色综合欧美98| 亚洲乱码国产乱码精品精98午夜| 日韩av一区二区三区| 成人黄色软件下载| 欧美一区二区视频在线观看 | 欧美唯美清纯偷拍| 欧美mv和日韩mv的网站| 国产精品家庭影院| 久久99国内精品| 日本高清不卡一区| 久久久91精品国产一区二区精品| 亚洲一区二区五区| 成人av在线一区二区三区| 欧美酷刑日本凌虐凌虐| 中文字幕一区免费在线观看| 麻豆久久一区二区| 欧美午夜精品一区二区蜜桃| 中文在线一区二区| 极品少妇一区二区| 欧美剧情片在线观看| 亚洲欧洲三级电影| 国产乱子轮精品视频| 日韩一区二区三区三四区视频在线观看 | 亚洲精品中文在线影院| 韩日av一区二区| 91精品国产综合久久久久| 亚洲三级电影网站| av中文字幕亚洲| 日本一区二区三区国色天香 | 蜜臀91精品一区二区三区| 色婷婷激情综合| 国产精品久久久一本精品| 激情国产一区二区| 欧美成人女星排行榜| 日本不卡在线视频| 51午夜精品国产| 亚洲国产欧美另类丝袜| 色婷婷久久久久swag精品| 亚洲日本在线视频观看| eeuss影院一区二区三区| 欧美经典三级视频一区二区三区| 美女精品一区二区| 精品国产1区2区3区| 久久国产精品色| 精品乱码亚洲一区二区不卡| 久久99精品国产.久久久久久| 日韩一区二区三区在线视频| 美女诱惑一区二区| 日韩亚洲欧美成人一区| 另类小说图片综合网| 日韩午夜在线影院| 国产一区二区三区国产| 欧美激情资源网| av在线播放不卡| 亚洲综合自拍偷拍| 欧美日韩国产首页在线观看| 日本免费新一区视频| 精品少妇一区二区| 国产精品一级黄| 亚洲色图欧美在线| 欧美日韩久久一区| 精品一区中文字幕| 国产精品区一区二区三区| 91浏览器在线视频| 日本不卡一区二区| 久久久久久9999| av欧美精品.com| 日韩电影免费在线看| 亚洲精品一线二线三线| 99久久精品久久久久久清纯| 亚洲综合另类小说| 日韩精品一区在线观看| 国产美女精品一区二区三区| 中文字幕亚洲电影| 91麻豆精品国产91久久久更新时间 | 亚洲成av人片在线| 精品国产91久久久久久久妲己 | 奇米综合一区二区三区精品视频| 亚洲精品一线二线三线| 色8久久精品久久久久久蜜| 日韩av电影免费观看高清完整版在线观看| 精品卡一卡二卡三卡四在线| 91视频xxxx| 久久国产乱子精品免费女| 亚洲色图色小说| 久久久国产综合精品女国产盗摄| 色综合欧美在线| 国产精品一区在线观看你懂的| 亚洲人成电影网站色mp4| 精品国产乱码久久久久久老虎 | 久久久蜜桃精品| 欧美日本一区二区| 99精品偷自拍| 国产精品99久久久久久宅男| 日韩av电影天堂| 亚洲精品视频免费观看| 亚洲国产精品精华液2区45| 欧美日韩精品欧美日韩精品| 99久久99久久精品免费观看| 精品无人码麻豆乱码1区2区| 亚洲成在线观看| 亚洲免费大片在线观看| 久久久精品欧美丰满| 91麻豆精品国产| 欧美三区在线视频| 91免费小视频| 成人精品免费网站| 国产成人综合网站| 国产又粗又猛又爽又黄91精品| 日韩黄色小视频| 丝袜美腿亚洲一区二区图片| 一区二区三区四区不卡在线 | 国产精品久久久久久久久免费相片 | 国产精品亚洲一区二区三区妖精| 日韩电影在线一区| 日韩电影在线观看电影| 午夜精品福利一区二区蜜股av| 亚洲免费观看视频| 亚洲女厕所小便bbb| 国产精品国产馆在线真实露脸| 国产精品视频线看| 国产精品理论在线观看| 国产精品理论在线观看| 国产精品网站在线观看| 国产精品日韩成人| 国产精品久久久久国产精品日日| 欧美—级在线免费片| 中文字幕一区二区三| 亚洲裸体xxx| 图片区小说区区亚洲影院| 日韩精品一二三四| 精品一区二区三区在线观看国产| 久久国产精品72免费观看| 国产在线播精品第三| 成人少妇影院yyyy| 91麻豆国产自产在线观看| 色94色欧美sute亚洲13| 欧美精品国产精品| 久久这里只精品最新地址| 欧美国产一区在线| 亚洲一区二区三区四区在线 | 久久久国产精品麻豆| 国产精品久久看| 亚洲午夜电影在线观看| 美女一区二区久久| 国产激情视频一区二区三区欧美 | 国产精品456| 91免费小视频| 日韩丝袜美女视频| 亚洲国产精品成人综合色在线婷婷 | 久久免费视频一区| 亚洲日本va午夜在线电影| 性感美女极品91精品| 国产精品888| 欧美视频在线观看一区| 久久在线免费观看| 一区二区成人在线| 国产精品一卡二卡| 欧美日韩国产一级片| 国产精品午夜久久| 日韩av高清在线观看| av亚洲精华国产精华| 日韩三级视频中文字幕| 国产精品福利在线播放| 久久99精品国产91久久来源 | 秋霞电影网一区二区| 成人一区二区三区视频在线观看| 欧美调教femdomvk| 国产精品视频看|