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

📄 ccdb.cpp

📁 wince下对sqlserver数据库的操作,增删改操作,单进程单线程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			case BUSINESS_ADDRLIST_GROUP:		//通讯簿分组表
				{
					WCHAR SqlIst[3][150];
				//如果是临时卡,删除时间
				swprintf(SqlIst[0],L"Delete from PTAddrListTable where GroupID=%d",
					*((int *)pstrReqParam->pBuf));
				swprintf(SqlIst[1],L"Delete from PMAddrListTable where GroupID=%d",
					*((int *)pstrReqParam->pBuf));
				swprintf(SqlIst[2],L"delete from AddrGroupTable where Id =%d ",
					*((int *)pstrReqParam->pBuf));

			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			NodeSql *pFirst,*pNode=NULL,*pNext=NULL;
			for(int i=0;i<3;i++)
			{
				pNext=new NodeSql;
				memset(pNext,0,sizeof(NodeSql));
				pNext->pSql = SqlIst[i];
				if(pNode==NULL)
				{
					pNode=pNext;
					pFirst=pNext;
				}else
				{
					pNode->pNext=pNext;
					pNode=pNext;
				}
			}
			BOOL  bDel=g_DataBase.ExecuteSql(pFirst);
			//删除
			while(pFirst)
			{
				pNode=pFirst;
				pFirst=pFirst->pNext;
				delete pNode;
			}
			g_DataBase.CloseData();
			if(bDel)
			{
				//发送同步消息
/*				num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
				for(int i=0;i<num;i++)
				{
					if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
						break;
				}
				*/
#ifndef _USEBYLHL
//				if(i <num && bSyn)
				if(bSyn)
				{//??默认都是第一个为主键ID
					DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int));
				}
#endif
				return ERR_BUS_SUCCESS;
			}
			else 
				return ERR_BUS_SQLEXE;				
				}break;
			case	BUSINESS_CCINFO:	          //	中控用户信息表
			case	BUSINESS_SECTION:	          //	区号表
			case	BUSINESS_PROVINCE:         //	省表
		//	case	BUSINESS_SCENEDEV:	          //	场景设备表
		//  case	BUSINESS_TIMER:	          //	定时器表
		//	case	BUSINESS_RING:	          //	铃声表
		//	case	BUSINESS_HOUSE:	          //	房间
			case	BUSINESS_HOUSETYPE:	          //	房间类型表
		//	case	BUSINESS_GUARDLOCK:	          //	门禁门磁绑定表
			case	BUSINESS_PASSRECORD:	          //	进出记录表
	//		case	BUSINESS_MAIL:	          //	邮件表
			case	BUSINESS_ALARMCONFIG:	          //	报警设置表
			case	BUSINESS_ALARMSPRING:	          //	报警触发表
			case	BUSINESS_ALARMNOTIFY:	          //	报警通知记录表
	//		case	BUSINESS_INFRAREFUN:	          //	红外功能表
	//		case	BUSINESS_INFRAREFUNBIND:	          //	红外功能绑定表
	//		case	BUSINESS_OUTGOING:	        //	开支明显表
	//		case BUSINESS_ADDRLIST_PM:		//普美用户通讯录
	//		case BUSINESS_ADDRLIST_PT:		//普通用户通讯录
	//		case BUSINESS_PARTDEFENCE:		//局部设防表
	//		case BUSINESS_LOCKCODE:		//门磁码表
	//		case BUSINESS_CARDTIMER:
				return ERR_BUS_MOTHEDSUPPORT;
				break;//卡有效时间表
			}
			WCHAR wcSql[300]=L"";
			//检查输入参数
			if(BusList[busindex].KeyIndex2 >=0)
			{
				if(pstrReqParam->nSize != sizeof(int)*2)
					return ERR_BUS_PARAMSIZE;
				//设置Sql删除语句
				swprintf(wcSql,L"delete from %s where %s = %d and %s = %d",BusList[busindex].Name,
					(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
					*((int *)pstrReqParam->pBuf),
					(BusList[busindex].pBusFields + BusList[busindex].KeyIndex2)->NAME,
					*((int *)pstrReqParam->pBuf+1)
					);
			}else
			{
				if(pstrReqParam->nSize != sizeof(int))
					return ERR_BUS_PARAMSIZE;
				//设置Sql删除语句
				swprintf(wcSql,L"delete from %s where %s = %d",BusList[busindex].Name,
					(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
					*((int *)pstrReqParam->pBuf)
					);
			}
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			BOOL  bDel=g_DataBase.ExecuteSql(wcSql);
			if(BUSINESS_SCENE==  pstrReqParam->nBusID)
			{
				WCHAR wcSql1[1024]=L"";
				swprintf(wcSql1,L"delete from scenedevtable where sceneid=%d;",
				*((int *)pstrReqParam->pBuf));
				g_DataBase.ExecuteSql(wcSql1);
			}
			g_DataBase.CloseData();
			if(bDel)
			{
				if(BUSINESS_VOICEMSG ==pstrReqParam->nBusID)
				{//	语音留言表
					DLLDeleteVoice(*((int *)pstrReqParam->pBuf));
					return ERR_BUS_SUCCESS;
				}

				//发送同步消息
/*				num=sizeof(BusToCmdList)/sizeof(BusToCmdList[0]);
				for(i=0;i<num;i++)
				{
					if(BusToCmdList[i].nBus== pstrReqParam->nBusID)
						break;
				}
				*/
#ifndef _USEBYLHL
			//	if(i <num && bSyn)
				if(bSyn)
				{//??默认都是第一个为主键ID
			//		DLLSynFuntInterfaceBug(BusToCmdList[i].nCmd,SYS_ACTION_DEL,(int*)pstrReqParam->pBuf,1);
							if(pstrReqParam->nBusID ==BUSINESS_SCENEDEV )
								DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int)*2);
							else
								DLLSynFuntInterfaceBug(pstrReqParam->nBusID,SYS_ACTION_DEL,(char*)pstrReqParam->pBuf,sizeof(int));
				}
#endif
				return ERR_BUS_SUCCESS;
			}
			else 
				return ERR_BUS_SQLEXE;
		
		}
		break;
	case ACTION_DELGROUP:		//删除指定父表ID(外键)
		{
			switch(pstrReqParam->nBusID)
			{//不支持组删除的业务类型
			case	BUSINESS_CCINFO:	          //	中控用户信息表
			case	BUSINESS_SECTION:	          //	区号表
			case	BUSINESS_PROVINCE:         //	省表
			case	BUSINESS_DEV:	          //	设备表
			case	BUSINESS_SCENE:	          //	场景表
		//	case	BUSINESS_SCENEDEV:	          //	场景设备表
			case	BUSINESS_TIMER:	          //	定时器表
			case	BUSINESS_CLOCK:	          //	闹钟表
			case	BUSINESS_RING:	          //	铃声表
			case	BUSINESS_SCHEDULE:	          //	日程表
			case	BUSINESS_HOUSE:	          //	房间
			case	BUSINESS_HOUSETYPE:	          //	房间类型表
			case	BUSINESS_CARD:        //	卡号(用户
			case	BUSINESS_GUARDLOCK:	          //	门禁门磁绑定表
			case	BUSINESS_PASSRECORD:	          //	进出记录表
			case	BUSINESS_VOICEMSG:	          //	语音留言表
			case	BUSINESS_TICKLER:	          //	备忘录表
			case	BUSINESS_MAIL:	          //	邮件表
			case	BUSINESS_ALARMCONFIG:	          //	报警设置表
			case	BUSINESS_ALARMSPRING:	          //	报警触发表
			case	BUSINESS_ALARMNOTIFY:	          //	报警通知记录表
	//		case	BUSINESS_INFRAREFUN:	          //	红外功能表
			case	BUSINESS_INFRAREFUNBIND:	          //	红外功能绑定表
			case	BUSINESS_OUTGOING:	        //	开支明显表
			case BUSINESS_ADDRLIST_GROUP:		//通讯簿分组表
			case BUSINESS_ADDRLIST_PM:		//普美用户通讯录
			case BUSINESS_ADDRLIST_PT:		//普通用户通讯录
			case BUSINESS_PARTDEFENCE:		//局部设防表
			case BUSINESS_LOCKCODE:		//门磁码表
			case BUSINESS_CARDTIMER:
			case BUSINESS_TELVIDEORECORD:		//局部设防表
			case BUSINESS_INTERFPHONERECORD:		//可视对讲记录
				return ERR_BUS_MOTHEDSUPPORT;
				break;//卡有效时间表
			}			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"delete 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;
			}
			BOOL  bDel=g_DataBase.ExecuteSql(wcSql);
			g_DataBase.CloseData();
			if(bDel)
			{
				if(bSyn)
				{
					DLLSynFuntInterfaceBug(pstrReqParam->nBusID,pstrReqParam->nMethod,(char*)pstrReqParam->pBuf,sizeof(int));
				}
				return ERR_BUS_SUCCESS;
			}
			else 
				return ERR_BUS_SQLEXE;
		}
		break;
	case ACTION_DELALL:			//删除所有的记录
		return ERR_BUS_MOTHEDNONE;
		break;
	case ACTION_QUERYID:		//查询指定主键的记录
		{
				if(pOut !=NULL)
				*pOut=NULL;

		/*		CoUninitialize();
				HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
				if(FAILED(hr))
				{
					MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
					return ERR_PROG_NOTOPEN;
				}
		*/	WCHAR wcWhere[300]=L"";
			//检查输入参数
			if(BusList[busindex].KeyIndex2 >=0)
			{
				if(pstrReqParam->nSize != sizeof(int)*2)
					return ERR_BUS_PARAMSIZE;
				//设置查询条件
				swprintf(wcWhere,L"where %s = %d and %s = %d",(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
					*((int *)pstrReqParam->pBuf),
					(BusList[busindex].pBusFields + BusList[busindex].KeyIndex2)->NAME,
					*((int *)pstrReqParam->pBuf+1)
					);
			}else
			{
				if(pstrReqParam->nSize != sizeof(int))
					return ERR_BUS_PARAMSIZE;
				//设置查询条件
				swprintf(wcWhere,L"where %s = %d",(BusList[busindex].pBusFields + BusList[busindex].KeyIndex1)->NAME,
					*((int *)pstrReqParam->pBuf)
					);
			}
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nID=g_DataBase.GetRows(BusList+busindex,wcWhere,pOut);
			g_DataBase.CloseData();
			if(BUSINESS_DEV==pstrReqParam->nBusID)
			{//从内存中取状态值
				RetResultStruct *pCur=*pOut;
				unsigned short unVal;
				while(pCur)
				{
					g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
					*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
					pCur=pCur->pNext;
				}
			}
			return nID;
		}
		break;
	case ACTION_QUERYGROUP:		//查询指定父表ID(外键)的所有记录
		{
			if(pOut !=NULL)
			*pOut=NULL;
	/*		CoUninitialize();
				HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
				if(FAILED(hr))
				{
					MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
					return ERR_PROG_NOTOPEN;
				}
	*/		WCHAR wcWhere[300]=L"";
			if(BusList[busindex].FKeyIndex<0)
				return ERR_BUS_FOREIGNKEY;
			if(pstrReqParam->nSize != sizeof(int))
				return ERR_BUS_PARAMSIZE;
			//设置查询条件
			swprintf(wcWhere,L"where %s = %d",(BusList[busindex].pBusFields + BusList[busindex].FKeyIndex)->NAME,
				*((int *)pstrReqParam->pBuf)
				);
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nID=g_DataBase.GetRows(BusList+busindex,wcWhere,pOut);
			g_DataBase.CloseData();
			if(BUSINESS_DEV==pstrReqParam->nBusID)
			{//从内存中取状态值
				RetResultStruct *pCur=*pOut;
				unsigned short unVal;
				while(pCur)
				{
					g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
					*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
					pCur=pCur->pNext;
				}
			}
			return nID;
		}
		break;
	case ACTION_QUERYALL:		//查询所有记录
		{
		/*		CoUninitialize();
				HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
				if(FAILED(hr))
				{
					MessageBox(NULL,L"数据库接口初始化错误!",L"数据库错误",MB_OK);
					return ERR_PROG_NOTOPEN;
				}
				*/
			WCHAR cwWhere[100]=L"";
			if(BUSINESS_ALARMSPRING ==pstrReqParam->nBusID )
			{
				wcscpy(cwWhere,L"order by time desc");
			}else if(BUSINESS_ALARMNOTIFY ==pstrReqParam->nBusID)
			{
				wcscpy(cwWhere,L"order by Idx desc");
			}else if(BUSINESS_PASSRECORD==pstrReqParam->nBusID)
			{
				wcscpy(cwWhere,L"order by time desc");
			}else if(BUSINESS_TELVIDEORECORD==pstrReqParam->nBusID)
			{
				wcscpy(cwWhere,L"order by time desc");
			}else if(BUSINESS_INTERFPHONERECORD==pstrReqParam->nBusID)
			{
				wcscpy(cwWhere,L"order by time desc");
			}/*else if(BUSINESS_SHORTMSG==pstrReqParam->nBusID)
			{
				wcscpy(cwWhere,L"order by time desc");
			}*/
			if(pOut !=NULL)
				*pOut=NULL;
			if(!g_DataBase.OpenData())
			{
				return ERR_PROG_NOTOPEN;
			}
			int nID=g_DataBase.GetRows(BusList+busindex,cwWhere,pOut);
			g_DataBase.CloseData();
			if(BUSINESS_DEV==pstrReqParam->nBusID)
			{//从内存中取状态值
				RetResultStruct *pCur=*pOut;
				unsigned short unVal;
				while(pCur)
				{
					g_DevValueMap.Lookup(*((int*)((char *)pCur->pBuf +DEV_ADDR_POS)),unVal);
					*(unsigned short *)((char *)pCur->pBuf +DEV_VALUE_POS)=unVal;
			//		swprintf(cwWhere,L"dwvid=%d,sys=%d,dev=%d,val=%d",*(int*)pCur->pBuf,*((unsigned short*)((char *)pCur->pBuf +DEV_ADDR_POS)),
			//			*((unsigned short*)((char *)pCur->pBuf +DEV_ADDR_POS+2)),unVal);
			//		writebuginfo(cwWhere);
					pCur=pCur->pNext;
				}
			}
			return nID;
		}
		break;
	case ACTION_SUMFIELD:		//统计指定字段的记录数,主要用于新增、修改的重名检查
		{
			WCHAR wcSql[300]=L"",cwTemp[100];
			switch(pstrReqParam->nBusID)
			{
			case BUSINESS_DEV://	设备表
				{//参数:房间ID、设备ID、设备名称
					if(pstrReqParam->nSize != (CC_DEVIE_NAME_LEN + sizeof(int)))//sizeof(SumParamDev))
					{
						return ERR_BUS_PARAMSIZE;
					}
					SumParamDev *pParamDev=(SumParamDev*)pstrReqParam->pBuf;
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(char*)pParamDev->DevName,CC_DEVIE_NAME_LEN,cwTemp,100);
					ReplaceYinhao(cwTemp);
					//设置统计sql语句
					swprintf(wcSql,L"select DevID from DevTable where HouseID = %d and Name='%s'",
						pParamDev->nHouseID,cwTemp);

				}
				break;
			case BUSINESS_SCENEDEV://	场景设备表
				{//参数:场景ID、设备ID
					if(pstrReqParam->nSize != 2*sizeof(int))
					{

⌨️ 快捷键说明

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