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

📄 ccdb.cpp

📁 wince下对sqlserver数据库的操作,增删改操作,单进程单线程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						return ERR_BUS_PARAMSIZE;
					}

					//设置统计sql语句
					swprintf(wcSql,L"select SceneID from SceneDevTable where SceneID = %d and DevID=%d",
						*((int*)pstrReqParam->pBuf),*(((int*)pstrReqParam->pBuf)+1));
				}
				break;
			case BUSINESS_SCENE://	场景表
				{//参数:房间ID、场景ID、场景名称
					if(pstrReqParam->nSize != (CC_SCENE_NAME_LEN+sizeof(int)))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamScene *pParamScene=(SumParamScene*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(char*)pParamScene->SceneName,CC_SCENE_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select SceneID from SceneTable where HouseID = %d and Name='%s'",
						pParamScene->nHouseID,cwTemp);
					}
				break;
			case BUSINESS_HOUSE://	房间
				{//参数:房间名称
					if(pstrReqParam->nSize != sizeof(SumParamHouse))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamHouse *pParamHouse=(SumParamHouse*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamHouse->HouseName,CC_ROOM_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select HouseID from HouseTable where Name='%s'",
						cwTemp);
				}
				break;
			case BUSINESS_CARD://	卡号(用户
				{//参数:卡编号
					if(pstrReqParam->nSize != sizeof(SumParamCard))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamCard *pParamCard=(SumParamCard*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamCard->CardNum,CC_CARD_NUM_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select CardID from CardTable where Number='%s'",
						cwTemp);
				}
				break;
			case BUSINESS_LOCKCODE://门磁码表
				{//参数:门磁码
					if(pstrReqParam->nSize != sizeof(SumParamLock))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamLock *pParamLock=(SumParamLock*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParamLock->LockName,CC_DOOR_MAGCODE_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select LockID from LockCodeTable where Code='%s'",
						cwTemp);
				}
				break;
			case BUSINESS_PARTDEFENCE:
				{//根据 检查是否重复
					int nsumsize=sizeof(SumParamPartDefence);
						if(pstrReqParam->nSize != sizeof(SumParamPartDefence))
						{
							return ERR_BUS_PARAMSIZE;
						}
					SumParamPartDefence *pParam=(SumParamPartDefence*)pstrReqParam->pBuf;
					//设置统计sql语句
					swprintf(wcSql,L"select ID from PartDefenceTable where HouseID=%d \
						and Type =%d and StartTime=%d and EndTime =%d",
						pParam->nRoomId,pParam->cLookType,pParam->nStartTime,pParam->nEndTime);
				}
				break;
			case BUSINESS_ADDRLIST_GROUP:
				{//1026		//通讯簿分组表:【组名称】和【组类型ID】
					
					if(pstrReqParam->nSize != sizeof(SumParamGroup))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamGroup *pParam=(SumParamGroup*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->nGroupName,PHONEBOOKGROUP_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select ID from AddrGroupTable where Type=%d and Name='%s'",pParam->nGroup,
						cwTemp);
				}
				break;
			case BUSINESS_ADDRLIST_PM:
				{//1027		//普美用户通讯录:【组ID】和【姓名】
					
					if(pstrReqParam->nSize != sizeof(SumParamPMBook))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamPMBook *pParam=(SumParamPMBook*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->szName,CC_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select UserID from PMAddrListTable where GroupID=%d and Name='%s'",pParam->nGroupID,
						cwTemp);
				}
				break;
			case BUSINESS_ADDRLIST_PT:
				{//1028		//普通用户通讯录:【组ID】和【昵称】
					
					if(pstrReqParam->nSize != sizeof(SumParamPTBook))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamPTBook *pParam=(SumParamPTBook*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pParam->szName,CC_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select UserID from PTAddrListTable where GroupID=%d and Name='%s'",pParam->nGroupID,
						cwTemp);
				}
				break;
				case	BUSINESS_INFRAREFUN:	          //	红外功能表
					{
						if(pstrReqParam->nSize != sizeof(int)*2)
						{
							return ERR_BUS_PARAMSIZE;
						}

						//设置统计sql语句
						swprintf(wcSql,L"select Id from InfrareFunTable \
							where FunID=%d and DevID=%d",
							*((int*)pstrReqParam->pBuf),*(((int*)pstrReqParam->pBuf)+1));

					}
					break;
			case BUSINESS_INFRAREFUNBIND:
				{//		//遥控器按键绑定:按键值和房间ID
					
					if(pstrReqParam->nSize != sizeof(int)*2)
					{
						return ERR_BUS_PARAMSIZE;
					}

					//设置统计sql语句
					swprintf(wcSql,L"select Idx from InfrareFunBindTable as a,DevTable as b \
						where KeyVal=%d and ObjectType=%d and ObjectID=DevID and HouseID=%d \
						UNION \
						select Idx from InfrareFunBindTable as a,SceneTable as b \
						where KeyVal=%d and ObjectType=%d and ObjectID=SceneID and HouseID=%d ",
						*((int*)pstrReqParam->pBuf),REMOTEBIND_DEV,*(((int*)pstrReqParam->pBuf)+1),
						*((int*)pstrReqParam->pBuf),REMOTEBIND_SCENE,*(((int*)pstrReqParam->pBuf)+1)
						);
				}
				break;
			default:
				{
					return ERR_BUS_MOTHEDNONE;
				}
				break;
			}
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nCount=g_DataBase.CountSql(wcSql);
			g_DataBase.CloseData();
			return nCount;
		}
		break;
	case ACTION_SUMGROUP:		//统计指定父表ID(外键)的所有记录数
		{
			WCHAR wcSql[300]=L"";
			if(BusList[busindex].FKeyIndex<0)
				return ERR_BUS_FOREIGNKEY;
			if(pstrReqParam->nSize != sizeof(int))
				return ERR_BUS_PARAMSIZE;
			//设置统计sql语句
			swprintf(wcSql,L"select * from %s where %s = %d",BusList[busindex].Name,(BusList[busindex].pBusFields + BusList[busindex].FKeyIndex)->NAME,
				*((int *)pstrReqParam->pBuf)
				);
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nCount=g_DataBase.CountSql(wcSql);
			g_DataBase.CloseData();
			return nCount;

		}
		break;
	case ACTION_SUMALL:			//统计所有记录数(本地)
		{
			WCHAR wcSql[300]=L"";
			if(BusList[busindex].FKeyIndex<0)
				return ERR_BUS_FOREIGNKEY;
			if(pstrReqParam->nSize != sizeof(int))
				return ERR_BUS_PARAMSIZE;
			//设置统计sql语句
			swprintf(wcSql,L"select * from %s",BusList[busindex].Name);
		//	swprintf(wcSql,L"select %s from %s",BusList[busindex].pBusFields->NAME,BusList[busindex].Name);
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nCount=g_DataBase.CountSql(wcSql);
			g_DataBase.CloseData();
			return nCount;
		}
		break;
	default:
		{//单业务特殊功能处理
				if(pOut !=NULL)
				*pOut=NULL;

			WCHAR cwTemp[100]=L"";
			int nRet=0;
			switch(pstrReqParam->nBusID)
			{
				case BUSINESS_CCINFO:
				{
					if(ACTION_MODIFY_CCINFOID==pstrReqParam->nMethod)
					{//更改中控ID
						if(pstrReqParam->nSize != sizeof(int) *2)
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"Update CCInfoTable set CCID= %d where CCID=%d",
							*(((int*)pstrReqParam->pBuf)+1),*(int*)pstrReqParam->pBuf);
							if(!g_DataBase.OpenData())
							{
								return ERR_PROG_NOTOPEN;
							}
							BOOL bRet=g_DataBase.ExecuteSql(cwSql);
							g_DataBase.CloseData();
							if(bRet)
								return ERR_BUS_SUCCESS;
							else
								return ERR_BUS_SQLEXE;
					}else
					{
						return ERR_BUS_MOTHEDNONE;
					}
				}
				break;
				case BUSINESS_HOUSE:
					{
						if((ACTION_HOUSE_QUERYBYDEVTYPE==pstrReqParam->nMethod))
						{//查询房间具有人体红外设备的房间信息	1011	21 改成根据参数指定的设备类型
							if(pstrReqParam->nSize != sizeof(short) )
							{
								return ERR_BUS_PARAMSIZE;
							}
							swprintf(cwSql,L"select * from housetable where houseid in(select HouseID from devtable where Devtype=%d)",
							*(short*)pstrReqParam->pBuf);
						}else
						{
							return ERR_BUS_MOTHEDNONE;
						}
					}
					break;
			case BUSINESS_DEV:
				{
					if((ACTION_DEV_QUERYBYADDR==pstrReqParam->nMethod))
					{//按地址查询设备
						if(pstrReqParam->nSize != sizeof(short) *2)
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"select * from %s where DevAddr=%d and SysAddr=%d",BusList[busindex].Name,
							*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
					}else if(ACTION_DEV_QUERYBYDEVTYPE==pstrReqParam->nMethod)
					{//根据设备类型查询设备
						if(pstrReqParam->nSize != sizeof(short))
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"select * from DevTable where DevType =%d",*(short*)pstrReqParam->pBuf);
					}else if(ACTION_DEV_QUERYBYBINDDEVID==pstrReqParam->nMethod)
					{//根据虚设备ID查询绑定的设备
						if(pstrReqParam->nSize != sizeof(int))
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"select * from DevTable where RealDevID =%d",*(int*)pstrReqParam->pBuf);
					}else if(ACTION_DEV_UPDATE_ONLINE==pstrReqParam->nMethod )
					{
						if(pstrReqParam->nSize != sizeof(short)*2 +1)
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"Update DevTable  set IsOnLine=%d \
							where (SysAddr=%d and DevAddr=%d) or \
							DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.SysAddr=%d and real.DevAddr=%d and real.DevID = virtual.RealDevID)",
							*((BYTE*)pstrReqParam->pBuf+4),*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1),
							*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
							if(!g_DataBase.OpenData())
							{
								return ERR_PROG_NOTOPEN;
							}
							nRet=g_DataBase.ExecuteSql(cwSql);
							g_DataBase.CloseData();
							//发送同步消息
/*							num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
							for(i=0;i<num;i++)
							{
								if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
									break;
							}
							if(nRet && i <num && bSyn)
*/							if(nRet  && bSyn)
							{
#ifndef _USEBYLHL
								struct devce_state_info DevInfo;
								memset(&DevInfo,0,sizeof(struct devce_state_info));
								DevInfo.shSysAddr = *(short*)pstrReqParam->pBuf;
								DevInfo.shDevAddr =*(((short*)pstrReqParam->pBuf)+1);
								DevInfo.stateType=0;
								DevInfo.cOnLine=*((BYTE*)pstrReqParam->pBuf+4);
								DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEV_STATUS,(char*)pstrReqParam->pBuf,sizeof(short)*2,
									(char*)&DevInfo,sizeof(struct devce_state_info));
#endif
							}
							if(nRet )
								return ERR_BUS_SUCCESS;
							else
								return ERR_BUS_SQLEXE;
					}
					else if(ACTION_DEV_UPDATE_ENABLE==pstrReqParam->nMethod)
					{
						if(pstrReqParam->nSize != sizeof(short)*2 +1)
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"Update DevTable  set SysStatus=%d,Value=0 \
							where (SysAddr=%d and DevAddr=%d) or \
							DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.SysAddr=%d and real.DevAddr=%d and real.DevID = virtual.RealDevID)",
							*((BYTE*)pstrReqParam->pBuf+4),*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1),
							*(short*)pstrReqParam->pBuf,*(((short*)pstrReqParam->pBuf)+1));
//						wprintf(_T("----------------------sql=%s\n"),cwSql);	
						if(!g_DataBase.OpenData())
							{
								return ERR_PROG_NOTOPEN;
							}
							nRet=g_DataBase.ExecuteSql(cwSql);
							g_DataBase.CloseData();
							//发送同步消息
/*							num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
							for(i=0;i<num;i++)
							{
								if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
									break;
							}
							if(nRet && i <num && bSyn)
*/							if(nRet  && bSyn)
							{
#ifndef _USEBYLHL
								struct devce_state_info DevInfo;
								memset(&DevInfo,0,sizeof(struct devce_state_info));
								DevInfo.shSysAddr = *(short*)pstrReqParam->pBuf;
								DevInfo.shDevAddr =*(((short*)pstrReqParam->pBuf)+1);
								DevInfo.stateType=2;
								DevInfo.cStop=*((BYTE*)pstrReqParam->pBuf+4);
								DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEV_STATUS,(char*)pstrReqParam->pBuf,sizeof(short)*2,
									(char*)&DevInfo,sizeof(struct devce_state_info));
#endif
							}
							if(nRet )
								return ERR_BUS_SUCCESS;
							else
								return ERR_BUS_SQLEXE;
					}
					else if(ACTION_DEV_UPDATE_ENABLE_BYID==pstrReqParam->nMethod)
					{
						if(pstrReqParam->nSize != sizeof(int) +1)
						{
							return ERR_BUS_PARAMSIZE;
						}
						swprintf(cwSql,L"Update DevTable  set SysStatus=%d,Value=0 \
							where (DevID=%d) or \
							DevID in (select virtual.DevId from DevTable as real,DevTable as virtual where real.DevID=%d and real.DevID = virtual.RealDevID)",
							*((BYTE*)pstrReqParam->pBuf+4),*(int*)pstrReqParam->pBuf,
							*(int*)pstrReqParam->pBuf);
//						wprintf(_T("----------------------sql=%s\n"),cwSql);	
						if(!g_DataBase.OpenData())
							{
								return ERR_PROG_NOTOPEN;
							}
							nRet=g_DataBase.ExecuteSql(cwSql);
							g_DataBase.CloseData();
							//发送同步消息
/*							num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
							for(i=0;i<num;i++)
							{
								if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
									break;
							}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -