亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
在线综合亚洲欧美在线视频 | 国产精品乱子久久久久| 激情综合色播激情啊| 91精品国产综合久久婷婷香蕉| 视频一区视频二区中文| 337p亚洲精品色噜噜| 麻豆精品蜜桃视频网站| 国产三区在线成人av| www.亚洲人| 亚洲网友自拍偷拍| 日韩一级大片在线| 国产69精品久久99不卡| 亚洲欧美另类在线| 欧美日本在线视频| 国产一区二区三区最好精华液| 国产精品色噜噜| 在线观看网站黄不卡| 久久精品国产**网站演员| 国产清纯白嫩初高生在线观看91| 91视频精品在这里| 亚洲五月六月丁香激情| 精品1区2区在线观看| 99riav久久精品riav| 男人的天堂久久精品| 欧美韩国一区二区| 欧美二区在线观看| 懂色av中文一区二区三区| 午夜免费久久看| 中文在线免费一区三区高中清不卡| 色播五月激情综合网| 国内成人免费视频| 一区二区三区四区不卡视频| 日韩欧美激情一区| 色婷婷亚洲综合| 国产一区二区三区观看| 亚洲国产乱码最新视频 | 99在线精品观看| 欧美一区二区福利在线| 国产黑丝在线一区二区三区| 日韩一区在线看| 欧美少妇xxx| 激情深爱一区二区| 自拍av一区二区三区| 欧美一区二区久久久| 成人午夜电影小说| 亚洲一区二区三区四区的| 精品美女被调教视频大全网站| 粉嫩久久99精品久久久久久夜| 日韩va欧美va亚洲va久久| 国产欧美1区2区3区| 欧美系列在线观看| 成人性生交大片免费看在线播放| 亚洲电影第三页| 国产欧美日韩精品a在线观看| 欧美性受极品xxxx喷水| 国产麻豆精品在线| 亚洲国产欧美在线人成| 国产精品入口麻豆原神| 欧美一区二区黄色| 在线精品国精品国产尤物884a| 蜜臀久久99精品久久久画质超高清 | 欧美一区二区网站| www.视频一区| 久久99国产精品久久99| 亚洲一区二区三区三| 中文字幕乱码日本亚洲一区二区| 日韩三级高清在线| 欧美日韩国产一区| 97精品久久久午夜一区二区三区 | 婷婷久久综合九色国产成人 | 欧美国产欧美综合| 日韩一级片在线观看| 欧美在线播放高清精品| 99久久久无码国产精品| 国产在线播放一区| 蜜桃视频在线一区| 婷婷国产在线综合| 亚洲五月六月丁香激情| 樱桃国产成人精品视频| 国产亲近乱来精品视频| 5858s免费视频成人| 欧美精三区欧美精三区| 91美女在线观看| 99精品视频在线免费观看| 国产乱对白刺激视频不卡| 久久69国产一区二区蜜臀| 日本视频免费一区| 日韩福利电影在线观看| 日韩精品五月天| 午夜久久久久久久久| 亚洲成a人在线观看| 午夜在线电影亚洲一区| 亚洲国产精品自拍| 午夜视频一区在线观看| 午夜精品123| 奇米综合一区二区三区精品视频 | 在线观看精品一区| 在线观看亚洲一区| 欧美日韩国产精选| 欧美日韩一本到| 欧美区视频在线观看| 欧美日韩大陆在线| 91精品国产黑色紧身裤美女| 91.麻豆视频| 91精品国产综合久久国产大片| 宅男噜噜噜66一区二区66| 日韩欧美一级在线播放| 精品国产凹凸成av人导航| 日韩一级片在线观看| 亚洲国产精品黑人久久久| 中文字幕一区二区三区av| 一区二区高清视频在线观看| 一区二区三区四区乱视频| 五月天国产精品| 国产在线精品不卡| caoporn国产精品| 欧美性大战久久久久久久蜜臀 | 狠狠久久亚洲欧美| 国产成人在线网站| 91亚洲永久精品| 成人深夜在线观看| 在线视频你懂得一区二区三区| 欧美精品久久天天躁| 欧美电影免费观看高清完整版在 | 91一区二区三区在线播放| 欧美日韩一级视频| 91精品国产综合久久久久久久久久| 欧美少妇性性性| 日韩视频一区在线观看| 亚洲欧美一区二区三区极速播放| 亚洲一区二区在线播放相泽| 久久精品国产精品亚洲红杏 | 91小宝寻花一区二区三区| 欧美日韩免费观看一区三区| 久久精品人人做人人综合| 亚洲激情六月丁香| 国产老肥熟一区二区三区| 91福利视频久久久久| 欧美大片一区二区| 亚洲欧美在线aaa| 美女性感视频久久| 日本国产一区二区| 久久新电视剧免费观看| 亚洲日本va在线观看| 天天综合天天综合色| 国产一区在线观看视频| 欧美系列亚洲系列| 国产精品久久久久影视| 精品一区二区久久久| 欧美视频一区二区三区四区 | 久久97超碰国产精品超碰| 在线亚洲一区观看| 久久精品人人做人人爽人人| 首页欧美精品中文字幕| 99精品黄色片免费大全| 欧美不卡视频一区| 午夜精品爽啪视频| 国产一区二区精品久久91| 日韩精品一区二区三区中文精品| 一区二区三区视频在线看| 国产成人在线观看免费网站| 欧美xxxx老人做受| 肉肉av福利一精品导航| 欧美色图免费看| 亚洲麻豆国产自偷在线| 国产精品综合一区二区三区| 91官网在线免费观看| 日本一区二区三区国色天香| 激情欧美一区二区| 日韩欧美二区三区| 日韩不卡免费视频| 4438x亚洲最大成人网| 一区二区国产视频| 91麻豆精品一区二区三区| 中文字幕av免费专区久久| 国产精品一二二区| 欧美精品久久99| 日韩在线一区二区| 在线播放/欧美激情| 午夜精品福利视频网站| 欧美日韩国产大片| 日日夜夜精品视频天天综合网| 日本高清视频一区二区| 一区二区三区欧美| 欧美亚洲禁片免费| 亚洲成人自拍偷拍| 欧美揉bbbbb揉bbbbb| 日韩精品久久久久久| 欧美一卡二卡在线| 精品无码三级在线观看视频| 精品国产精品网麻豆系列| 国产一区二区在线免费观看| 国产午夜精品理论片a级大结局| 国产激情一区二区三区四区| 国产午夜亚洲精品午夜鲁丝片| 国产69精品一区二区亚洲孕妇 | 亚洲永久免费av| 91成人看片片| 久久精品国产亚洲高清剧情介绍| 2023国产精华国产精品|