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

📄 mydb.cpp

📁 电压监测后台管理程序,数据是通过GPRS传到因特网的
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	SQLBindParameter(hstmt,3,SQL_PARAM_INPUT,SQL_C_FLOAT,
        SQL_REAL,0,0,&szVot,0,NULL);
	
	szid[0] = ((rec[1]>>4)&0x0f) + '0';
	szid[1] = ((rec[1])&0x0f) + '0';
	szid[2] = ((rec[2]>>4)&0x0f) + '0';
	szid[3] = ((rec[2])&0x0f) + '0';
	szid[4] = 0;

	GetLocalTime(&loctime);
	szCommTime.year = loctime.wYear;
	szCommTime.month = loctime.wMonth;
	szCommTime.day = loctime.wDay;
	szCommTime.hour = loctime.wHour;
	szCommTime.minute = loctime.wMinute;
	szCommTime.second = loctime.wSecond;
	szCommTime.fraction = 0;

	szVot = ((rec[6]>>4)&0x0f)*100 + (rec[6]&0x0f)*10 + ((rec[7]>>4)&0x0f) + (float)(rec[7]&0x0f)/10;

	rc=SQLExecute(hstmt);
	if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) 
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}

	SQLFreeStmt(hstmt,SQL_CLOSE);
	rc = SQLTransact(henv,hdbc,SQL_COMMIT);   
	if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) 
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}

	return true;
}

UINT myDb::SaveMeterParameter(unsigned char *rec)
{
	UCHAR szid[5];
	UINT szPassword,szThreshold,szVoltage_Max,szVoltage_Min;
	float szRatio;
	UINT szTcp_Port,szTcp_IP1,szTcp_IP2,szTcp_IP3,szTcp_IP4,szTypeDate1,szTypeDate2,szTypeDate3;
	TIMESTAMP_STRUCT szComm_Date_Time;
	SYSTEMTIME loctime;

	strcpy((char *)SqlOrder,"INSERT INTO Meter_Parameter VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
	SQLFreeStmt(hstmt,SQL_RESET_PARAMS);
	rc = SQLPrepare(hstmt,SqlOrder,SQL_NTS);
	if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) 
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}
	SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,
		SQL_CHAR,5,0,szid,0,NULL);
	SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szPassword,0,NULL);
	SQLBindParameter(hstmt,3,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szThreshold,0,NULL);
	SQLBindParameter(hstmt,4,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szVoltage_Max,0,NULL);
	SQLBindParameter(hstmt,5,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szVoltage_Min,0,NULL);
	SQLBindParameter(hstmt,6,SQL_PARAM_INPUT,SQL_C_FLOAT,
		SQL_REAL,0,0,&szRatio,0,NULL);
	SQLBindParameter(hstmt,7,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTcp_Port,0,NULL);
	SQLBindParameter(hstmt,8,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTcp_IP1,0,NULL);
	SQLBindParameter(hstmt,9,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTcp_IP2,0,NULL);
	SQLBindParameter(hstmt,10,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTcp_IP3,0,NULL);
	SQLBindParameter(hstmt,11,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTcp_IP4,0,NULL);
	SQLBindParameter(hstmt,12,SQL_PARAM_INPUT,SQL_C_TYPE_TIMESTAMP,
        SQL_TYPE_TIMESTAMP,0,0,&szComm_Date_Time,sizeof(szComm_Date_Time),NULL);
	SQLBindParameter(hstmt,13,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTypeDate1,0,NULL);
	SQLBindParameter(hstmt,14,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTypeDate2,0,NULL);
	SQLBindParameter(hstmt,15,SQL_PARAM_INPUT,SQL_C_ULONG,
        SQL_INTEGER,0,0,&szTypeDate3,0,NULL);
	
	szid[0] = ((rec[1]>>4)&0x0f) + '0';
	szid[1] = ((rec[1])&0x0f) + '0';
	szid[2] = ((rec[2]>>4)&0x0f) + '0';
	szid[3] = ((rec[2])&0x0f) + '0';
	szid[4] = 0;

	szPassword = ((rec[6]>>4)&0x0f)*1000 + (rec[6]&0x0f)*100 + ((rec[7]>>4)&0x0f)*10 + (rec[7]&0x0f);
	szThreshold = ((rec[8]>>4)&0x0f)*1000 + (rec[8]&0x0f)*100 + ((rec[9]>>4)&0x0f)*10 + (rec[9]&0x0f);
	szVoltage_Max = ((rec[10]>>4)&0x0f)*1000 + (rec[10]&0x0f)*100 + ((rec[11]>>4)&0x0f)*10 + (rec[11]&0x0f);
	szVoltage_Min = ((rec[12]>>4)&0x0f)*1000 + (rec[12]&0x0f)*100 + ((rec[13]>>4)&0x0f)*10 + (rec[13]&0x0f);
	szRatio = ((rec[14]>>4)&0x0f) + (float)(rec[14]&0x0f)/10 + (float)((rec[15]>>4)&0x0f)/100 + (float)(rec[15]&0x0f)/1000;
	szTcp_Port = (rec[18]<<8) + rec[19];
	szTcp_IP1 = rec[20];
	szTcp_IP2 = rec[21];
	szTcp_IP3 = rec[22];
	szTcp_IP4 = rec[23];

	GetLocalTime(&loctime);
	szComm_Date_Time.year = loctime.wYear;
	szComm_Date_Time.month = loctime.wMonth;
	szComm_Date_Time.day = ((rec[28]>>4)&0x0f)*10 + (rec[28]&0x0f);
	szComm_Date_Time.hour = ((rec[29]>>4)&0x0f)*10 + (rec[29]&0x0f);
	szComm_Date_Time.minute = ((rec[30]>>4)&0x0f)*10 + (rec[30]&0x0f);
	szComm_Date_Time.second = ((rec[31]>>4)&0x0f)*10 + (rec[31]&0x0f);
	szComm_Date_Time.fraction = 0;

	szTypeDate1 = ((rec[32]>>4)&0x0f)*10 + (rec[32]&0x0f);
	szTypeDate2 = ((rec[33]>>4)&0x0f)*10 + (rec[33]&0x0f);
	szTypeDate3 = ((rec[34]>>4)&0x0f)*10 + (rec[34]&0x0f);

	rc=SQLExecute(hstmt);
	if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) 
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}

	SQLFreeStmt(hstmt,SQL_CLOSE);
	rc = SQLTransact(henv,hdbc,SQL_COMMIT);   
	if (rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO) 
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}

	return true;
}

BOOL myDb::ReadMeterParameter(unsigned char *buff)
{
	//UCHAR szid[5];
	UINT szPassword,szThreshold,szVoltage_Max,szVoltage_Min;
	float szRatio;
	UINT szTcp_Port,szTcp_IP1,szTcp_IP2,szTcp_IP3,szTcp_IP4,szTypeDate1,szTypeDate2,szTypeDate3;
	TIMESTAMP_STRUCT szComm_Date_Time;
	UINT tmpint,tint2;

	SDWORD cbp1,cbp2,cbp3,cbp4,cbp5,cbp6,cbp7,cbp8,cbp9,cbp10,cbp11;
	SDWORD cbp12,cbp13,cbp14;

	strcpy((char *)SqlOrder,"select * from Down_Meter_Parameter");
	SQLFreeStmt(hstmt,SQL_RESET_PARAMS);
	rc=SQLExecDirect(hstmt,SqlOrder,SQL_NTS);
	if(rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}	
	SQLBindCol(hstmt,1,SQL_C_ULONG,&szPassword,0,&cbp1);
	SQLBindCol(hstmt,2,SQL_C_ULONG,&szThreshold,0,&cbp2);
	SQLBindCol(hstmt,3,SQL_C_ULONG,&szVoltage_Max,0,&cbp3);
	SQLBindCol(hstmt,4,SQL_C_ULONG,&szVoltage_Min,0,&cbp4);
	SQLBindCol(hstmt,5,SQL_C_FLOAT,&szRatio,0,&cbp5);
	SQLBindCol(hstmt,6,SQL_C_ULONG,&szTcp_Port,0,&cbp6);
	SQLBindCol(hstmt,7,SQL_C_ULONG,&szTcp_IP1,0,&cbp7);
	SQLBindCol(hstmt,8,SQL_C_ULONG,&szTcp_IP2,0,&cbp8);
	SQLBindCol(hstmt,9,SQL_C_ULONG,&szTcp_IP3,0,&cbp9);
	SQLBindCol(hstmt,10,SQL_C_ULONG,&szTcp_IP4,0,&cbp10);
	SQLBindCol(hstmt,11,SQL_C_TYPE_TIMESTAMP,&szComm_Date_Time,0,&cbp11);
	SQLBindCol(hstmt,12,SQL_C_ULONG,&szTypeDate1,0,&cbp12);
	SQLBindCol(hstmt,13,SQL_C_ULONG,&szTypeDate2,0,&cbp13);
	SQLBindCol(hstmt,14,SQL_C_ULONG,&szTypeDate3,0,&cbp14);

	while(TRUE)
	{
		rc=SQLFetch(hstmt);
		if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
		{
			tmpint = szPassword%1000;
			buff[0] = ((szPassword/1000)<<4) + (tmpint/100);
			tmpint %= 100;
			buff[1] = ((tmpint/10)<<4) + (tmpint%10);

			tmpint = szThreshold%1000;
			buff[2] = ((szThreshold/1000)<<4) + (tmpint/100);
			tmpint %= 100;
			buff[3] = ((tmpint/10)<<4) + (tmpint%10);

			tmpint = szVoltage_Max%1000;
			buff[4] = ((szVoltage_Max/1000)<<4) + (tmpint/100);
			tmpint %= 100;
			buff[5] = ((tmpint/10)<<4) + (tmpint%10);

			tmpint = szVoltage_Min%1000;
			buff[6] = ((szVoltage_Min/1000)<<4) + (tmpint/100);
			tmpint %= 100;
			buff[7] = ((tmpint/10)<<4) + (tmpint%10);

			tint2 = (UINT)(szRatio*1000);
			tmpint = tint2%1000;
			buff[8] = ((tint2/1000)<<4) + (tmpint/100);
			tmpint %= 100;
			buff[9] = ((tmpint/10)<<4) + (tmpint%10);

			buff[10] = '0';			//表号
			buff[11] = '0';

			buff[12] = ((szTcp_Port>>8)&0xff);			//端口号
			buff[13] = (szTcp_Port&0xff);

			buff[14] = szTcp_IP1;
			buff[15] = szTcp_IP2;
			buff[16] = szTcp_IP3;
			buff[17] = szTcp_IP4;

			buff[18] = '0';								//reverse
			buff[19] = '0';
			buff[20] = '0';
			buff[21] = '0';

			buff[22] = (szComm_Date_Time.day/10)*16 + (szComm_Date_Time.day%10);
			buff[23] = (szComm_Date_Time.hour/10)*16 + (szComm_Date_Time.hour%10);
			buff[24] = (szComm_Date_Time.minute/10)*16 + (szComm_Date_Time.minute%10);
			buff[25] = (szComm_Date_Time.second/10)*16 + (szComm_Date_Time.second%10);

			buff[26] = (szTypeDate1/10)*16 + (szTypeDate1%10);
			buff[27] = (szTypeDate2/10)*16 + (szTypeDate2%10);
			buff[28] = (szTypeDate3/10)*16 + (szTypeDate3%10);

			buff[29] = 0;
			break;
		}
		else 
			return false;
	}
	SQLFreeStmt(hstmt,SQL_CLOSE);

	return true;
}

BOOL myDb::ReadDayData(unsigned char *buff,char *id,BYTE month,BYTE day)
{
	//UCHAR szid[5];
	UCHAR szid[5];
	UINT szRunTime,szOverTime,szLowTime;
	float szMaxVot,szMinVot;
	DATE_STRUCT szTJdate;
	TIMESTAMP_STRUCT szMAXVdate,szMINVdate;
	SDWORD cbp1,cbp2,cbp3,cbp4,cbp5,cbp6,cbp7,cbp8,cbp9;
	UINT tmpint;

	sprintf((char *)SqlOrder,"select * from Down_Day_Statistics where ((Meter_number = \'%s\') \
and (TJdate like \'%%%%-%d-%d\'))",id,month,day);

	rc=SQLExecDirect(hstmt,SqlOrder,SQL_NTS);
	if(rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}	
	SQLBindCol(hstmt,1,SQL_C_CHAR,&szid,0,&cbp1);
	SQLBindCol(hstmt,2,SQL_C_TYPE_DATE,&szTJdate,0,&cbp2);
	SQLBindCol(hstmt,3,SQL_C_ULONG,&szRunTime,0,&cbp3);
	SQLBindCol(hstmt,4,SQL_C_ULONG,&szOverTime,0,&cbp4);
	SQLBindCol(hstmt,5,SQL_C_ULONG,&szLowTime,0,&cbp5);
	SQLBindCol(hstmt,6,SQL_C_FLOAT,&szMaxVot,0,&cbp6);
	SQLBindCol(hstmt,7,SQL_C_TYPE_TIMESTAMP,&szMAXVdate,0,&cbp7);
	SQLBindCol(hstmt,8,SQL_C_FLOAT,&szMinVot,0,&cbp8);
	SQLBindCol(hstmt,9,SQL_C_TYPE_TIMESTAMP,&szMINVdate,0,&cbp9);

	rc=SQLFetch(hstmt);
	if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
	{
		tmpint = szTJdate.year%100;
		buff[0] = ((tmpint/10)<<4) + (tmpint%10);
		tmpint = szTJdate.month;
		buff[1] = ((tmpint/10)<<4) + (tmpint%10);
		tmpint = szTJdate.day;
		buff[2] = ((tmpint/10)<<4) + (tmpint%10);

		buff[3] = ((szRunTime>>8)&0xff);
		buff[4] = (szRunTime&0xff);
		buff[5] = ((szOverTime>>8)&0xff);
		buff[6] = (szOverTime&0xff);
		buff[7] = ((szLowTime>>8)&0xff);
		buff[8] = (szLowTime&0xff);

		tmpint = (UINT)(szMaxVot*10);
		buff[9] = ((tmpint/1000)<<4)+((tmpint%1000)/100);
		tmpint %= 100;
		buff[10] = ((tmpint/10)<<4)+(tmpint%10);
		buff[11] = ((szMAXVdate.month/10)<<4)+(szMAXVdate.month%10);
		buff[12] = ((szMAXVdate.day/10)<<4)+(szMAXVdate.day%10);
		buff[13] = ((szMAXVdate.hour/10)<<4)+(szMAXVdate.hour%10);
		buff[14] = ((szMAXVdate.minute/10)<<4)+(szMAXVdate.minute%10);

		tmpint = (UINT)(szMinVot*10);
		buff[15] = ((tmpint/1000)<<4)+((tmpint%1000)/100);
		tmpint %= 100;
		buff[16] = ((tmpint/10)<<4)+(tmpint%10);
		buff[17] = ((szMINVdate.month/10)<<4)+(szMINVdate.month%10);
		buff[18] = ((szMINVdate.day/10)<<4)+(szMINVdate.day%10);
		buff[19] = ((szMINVdate.hour/10)<<4)+(szMINVdate.hour%10);
		buff[20] = ((szMINVdate.minute/10)<<4)+(szMINVdate.minute%10);

		buff[21] = 0;
	}
	else return false;

	SQLFreeStmt(hstmt,SQL_UNBIND);
	SQLCloseCursor(hstmt);
	SQLFreeStmt(hstmt,SQL_CLOSE);
	return true;
}

BOOL myDb::ReadMonthData(unsigned char *buff,char *id,BYTE month)
{
	//UCHAR szid[5];
	UCHAR szid[5];
	UINT szRunTime,szOverTime,szLowTime;
	float szMaxVot,szMinVot;
	DATE_STRUCT szTJdate;
	TIMESTAMP_STRUCT szMAXVdate,szMINVdate;
	SDWORD cbp1,cbp2,cbp3,cbp4,cbp5,cbp6,cbp7,cbp8,cbp9;
	UINT tmpint;

	sprintf((char *)SqlOrder,"select * from Down_Month_Statistics where ((Meter_number = \'%s\') \
and (YearMonth like \'%%%%-%d-%%\'))",id,month);
	rc=SQLExecDirect(hstmt,SqlOrder,SQL_NTS);
	if(rc!=SQL_SUCCESS && rc!=SQL_SUCCESS_WITH_INFO)
	{
		SQLFreeStmt(hstmt,SQL_CLOSE);
		return FALSE;
	}	
	SQLBindCol(hstmt,1,SQL_C_CHAR,&szid,0,&cbp1);
	SQLBindCol(hstmt,2,SQL_C_TYPE_DATE,&szTJdate,0,&cbp2);
	SQLBindCol(hstmt,3,SQL_C_ULONG,&szRunTime,0,&cbp3);
	SQLBindCol(hstmt,4,SQL_C_ULONG,&szOverTime,0,&cbp4);
	SQLBindCol(hstmt,5,SQL_C_ULONG,&szLowTime,0,&cbp5);
	SQLBindCol(hstmt,6,SQL_C_FLOAT,&szMaxVot,0,&cbp6);
	SQLBindCol(hstmt,7,SQL_C_TYPE_TIMESTAMP,&szMAXVdate,0,&cbp7);
	SQLBindCol(hstmt,8,SQL_C_FLOAT,&szMinVot,0,&cbp8);
	SQLBindCol(hstmt,9,SQL_C_TYPE_TIMESTAMP,&szMINVdate,0,&cbp9);

	rc=SQLFetch(hstmt);
	if(rc==SQL_SUCCESS||rc==SQL_SUCCESS_WITH_INFO)
	{
		tmpint = szTJdate.year%100;
		buff[0] = ((tmpint/10)<<4) + (tmpint%10);
		tmpint = szTJdate.month;
		buff[1] = ((tmpint/10)<<4) + (tmpint%10);
		tmpint = szTJdate.day;
		buff[2] = ((tmpint/10)<<4) + (tmpint%10);

		buff[3] = ((szRunTime>>8)&0xff);
		buff[4] = (szRunTime&0xff);
		buff[5] = ((szOverTime>>8)&0xff);
		buff[6] = (szOverTime&0xff);
		buff[7] = ((szLowTime>>8)&0xff);
		buff[8] = (szLowTime&0xff);

		tmpint = (UINT)(szMaxVot*10);
		buff[9] = ((tmpint/1000)<<4)+((tmpint%1000)/100);
		tmpint %= 100;
		buff[10] = ((tmpint/10)<<4)+(tmpint%10);
		buff[11] = ((szMAXVdate.month/10)<<4)+(szMAXVdate.month%10);
		buff[12] = ((szMAXVdate.day/10)<<4)+(szMAXVdate.day%10);
		buff[13] = ((szMAXVdate.hour/10)<<4)+(szMAXVdate.hour%10);
		buff[14] = ((szMAXVdate.minute/10)<<4)+(szMAXVdate.minute%10);

		tmpint = (UINT)(szMinVot*10);
		buff[15] = ((tmpint/1000)<<4)+((tmpint%1000)/100);
		tmpint %= 100;
		buff[16] = ((tmpint/10)<<4)+(tmpint%10);
		buff[17] = ((szMINVdate.month/10)<<4)+(szMINVdate.month%10);
		buff[18] = ((szMINVdate.day/10)<<4)+(szMINVdate.day%10);
		buff[19] = ((szMINVdate.hour/10)<<4)+(szMINVdate.hour%10);
		buff[20] = ((szMINVdate.minute/10)<<4)+(szMINVdate.minute%10);

		buff[21] = 0;
	}
	else return false;

	SQLFreeStmt(hstmt,SQL_CLOSE);
	return true;
}

⌨️ 快捷键说明

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