ProcessDB实时/时序数据库——JAVA_API读写历史时序数据

一、历史时序数据字段

	 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值