一、历史时序数据字段
int pointId;//实时数据对应的数据点ID
String pointName;//实时数据对应的数据点名
Date timeStamp;//实时时间
short nQuality;//数据质量,如果数据在时限内没有更新,则为BAD,否则为GOOD
byte nTagType;//数据类型,例如ConstantValue.TAG_TYPE_FLOAT32
boolean nBool; //根据数据类型,传输相应的值
byte nDigital;//根据数据类型,传输相应的值
byte nInt8;//根据数据类型,传输相应的值
short nInt16;//根据数据类型,传输相应的值
int nInt32;//根据数据类型,传输相应的值
long nInt64;//根据数据类型,传输相应的值
float fFloat32;//根据数据类型,传输相应的值
double fFloat64;//根据数据类型,传输相应的值
二、插入历史时序数据
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import com.processdb.connection.DBConnect;
import com.processdb.connection.DBConnectManager;
import com.processdb.connection.DBPoint;
import com.processdb.connection.DBRoot;
import com.processdb.connection.DBTable;
import com.processdb.connection.DBase;
import com.processdb.driver.common.ConnectInfo;
import com.processdb.driver.dao.DBHistoryDataDao;
import com.processdb.driver.record.MemSampleRecord;
public class Test {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception
{
ConnectInfo host = new ConnectInfo();
host.setConnectName("instance01");
host.setHostName("127.0.0.1");
host.setHostPort(8301);
host.setUserName("root");
host.setPassword("root");
host.setCacheable(false);
DBConnect myConn = null;
myConn = DBConnectManager.getInstance().getConnect(host);
DBRoot root = DBRoot.getInstance(myConn);
String dbname ="D30";
DBase dBase = root.getCachedDatabaseByName(dbname);
String tableName ="T31";
DBTable dbtable = dBase.getCachedTableByName(tableName);
String pointName = "P30";
DBPoint dbpoint = dbtable.getCachedPointByName(pointName);
Vector<MemSampleRecord> recordList = new Vector<MemSampleRecord>();
MemSampleRecord recorData = new MemSampleRecord();
int counter = 66;
recorData.setPointId(dbpoint.getID());
//根据需要插入的实时库数据的属性
recorData.setTagType(dbpoint.getDataType());
recorData.setFloat32((float)(counter%100));
short status = (short) 0;
recorData.setQuality(status);
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null; //结束时间
date = dateFmt.parse("2022-11-04 12:32:02");
recorData.setTimeStamp(date);
recordList.add(recorData);
int res = DBHistoryDataDao.insertPointHistory(myConn,recordList);
if(res != 0)
{
System.out.print("Insert HistoryData failed, error code: " + res);
return;
}
else
{
System.out.print("Insert HistoryData success.");
}
}}
三、查询历史时序数据
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import com.processdb.connection.DBConnect;
import com.processdb.connection.DBConnectManager;
import com.processdb.driver.common.ConnectInfo;
import com.processdb.driver.common.ConstantValue;
import com.processdb.driver.dao.DBHistoryDataDao;
import com.processdb.driver.record.HistoryRecordSet;
import com.processdb.driver.record.PointHistory;
public class Test {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception {
ConnectInfo host = new ConnectInfo();
host.setConnectName("instance01");
host.setHostName("127.0.0.1");
host.setHostPort(8301);
host.setUserName("root");
host.setPassword("root");
host.setCacheable(false);
DBConnect myConn = null;
myConn = DBConnectManager.getInstance().getConnect(host);
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date begindate = null; // 开始时间
Date enddate = null; // 结束时间
begindate = dateFmt.parse("2022-11-04 00:00:00");
enddate = dateFmt.parse("2022-11-04 18:00:00");
String pointNameArray[] = { "D30.T31.P30" };
short pageSize = 10; // 每页显示条数
short pageNum = 0; // 页码,即第pageNum+1页
int interval = 0; // 时间间隔
byte query_type = ConstantValue.HIS_VALUE_SAMPLE; // 采样点
// 查询历史的参数列表
Vector<PointHistory> pointHistoryList = new Vector<PointHistory>();
// 给查询历史的参数列表赋值
for (int i = 0; i < pointNameArray.length; i++) {
PointHistory ph = new PointHistory(pointNameArray[i], begindate, enddate,
interval, query_type,ConstantValue.HISTORY_FILTER_GREATE_THAN,
ConstantValue.HISTORY_FILTER_LESS_THAN, (float) 10,
(float) 100, ConstantValue.HISTORY_FILL_VALUE_TYPE_RAW, (float) 0, (int) 0,
(short) 0, pageSize,pageNum);
pointHistoryList.add(ph);
}
// 查询历史数据
DBHistoryDataDao.requestPointHistoryByName(myConn, pointHistoryList);
for (int ii = 0; ii < pointHistoryList.size(); ii++) { // 遍历所有点
PointHistory ph = pointHistoryList.get(ii);
HistoryRecordSet record = ph.getSampleRecordSet(); // 采样点的历史数据
int count = record.getRecordNum(); // 历史数据个数
for (int i = 0; i < count; i++) {
// 遍历每个历史数据,根据点的不同数据类型,解析出历史数据值
Date t = record.getTime(i); // 读取历史时刻
double value = record.getFloat32(i); // 读取Float32类型历史数据
System.out.println("数据序号" + (i + 1) + ",数据时间:" + dateFmt.format(t)
+ ",历史数据值:" + value);
}
}
}
}
示例运行结果:
数据序号1,数据时间:2022-11-04 12:00:53,历史数据值:30.0
数据序号2,数据时间:2022-11-04 12:03:08,历史数据值:50.0
数据序号3,数据时间:2022-11-04 12:32:02,历史数据值:66.0