📄 mydb.cpp
字号:
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 + -