ProcessDB实时/时序数据库——JDBC读写实时数据

 一、实时数据表字段介绍

CREATE TABLE RT_TABLE ( 

 ID_F          INT;//数据点ID,

 NAME_F        STRING;//数据点名称,

 VALUE_F       STRING;//实时数据值,

 UNIT_F        STRING;//数据单位,

 DESC_F        STRING;//数据点描述,

 QUALITY_F     STRING;//数据质量,

 TIME_F        STRING;//数据时间,

 DATE_TYPE     STRING;//数据类型

 )

 二、添加实时数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class Test {
	public static void main(String[] args) {
		try {
			Class.forName("com.processdb.jdbc.JDBC");

			Connection connection = null;
			Statement statement = null;
			try {
				// 对数据库进行连接
				connection = DriverManager.getConnection("jdbc:processdb://localhost:8301/instance01", "root", "root");
				statement = connection.createStatement();
				// 设置超时时间
				statement.setQueryTimeout(30); // set timeout to 30 sec.
				int i = 0;
				while (i < 1) {
					i++;
					// 插入sql
					/**插入实时数据表 RT_TABLE
					 * 所需字段
					 * name_f = 'public.sys.PDB_OS_CPU_USAGE' 数据点的位置(必填)
					 * NAME_F 数据点的位置(必填)
					 * TIME_F 实时数据的时间(可不填写,默认当前时间,若需要填写时间,则时间为时间戳格式,例如:1667800758000)
					 * DATE_TYPE 数据类型(必填)
					 * VALUE_F 插入数据的值(必填)
					 */
					String sql = "INSERT INTO RT_TABLE (NAME_F,TIME_F,DATE_TYPE,VALUE_F) values ('D30.T31.P30','1667889866000','FLOAT32','56')";
					// 运行sql发起请求
					 statement.executeUpdate(sql);
					// 查询结果存储在ResultSet
					System.out.println("Insert realtime data into table: rt_table.");}}
			 catch (SQLException e) {
				System.err.println(e.getMessage());
				e.printStackTrace();
			} finally {
				try {

					if (statement != null) {
						statement.close();
					}
					if (connection != null) {
						connection.close();
					}
				} catch (SQLException e) {
					System.err.println(e);
				}
			}
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
			return;
		}
		return;
	}
}

三、修改实时数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {
	public static void main(String[] args) {
		try {
			Class.forName("com.processdb.jdbc.JDBC");

			Connection connection = null;
			Statement statement = null;
			try {
				// 对数据库进行连接
				connection = DriverManager.getConnection("jdbc:processdb://localhost:8301/instance01", "root", "root");
				statement = connection.createStatement();
				// 设置超时时间
				statement.setQueryTimeout(30); // set timeout to 30 sec.
				int i = 0;
				while (i < 1) {
					i++;
					// sql
					/**修改实时数据 RT_TABLE
					 * 所需字段
					 * name_f  数据库名称加数据表名称加数据点名称(例如:public.sys.PDB_OS_CPU_USAGE)
					 * 可修改字段
					 * value_f  历史数据数据值
					 */
					String sql = "Update  RT_TABLE set value_f = 199 where name_f= 'D30.T31.P30' ";		
					// 运行sql发起请求
					statement.executeUpdate(sql);
					System.out.println("Update realtimeData Success");
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				e.printStackTrace();
			} finally {
				try {

					if (statement != null) {
						statement.close();
					}
					if (connection != null) {
						connection.close();
					}
				} catch (SQLException e) {
					System.err.println(e);
				}
			}
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
			return;
		}
		return;
	}
}

四、查询实时数据

支持上级查询,只输入数据库名,则是该数据库下所有点的实时数据,输入数据库加表名,这是该数据表下的所有点的实时数据,若要查询该连接下的所有点的实时数据,则输入空字符串

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Test {
	public static void main(String[] args) {
		try {
			Class.forName("com.processdb.jdbc.JDBC");

			Connection connection = null;
			Statement statement = null;
			try {
				// 对数据库进行连接
				connection = DriverManager.getConnection("jdbc:processdb://localhost:8301/instance01", "root", "root");
				statement = connection.createStatement();
				// 设置超时时间
				statement.setQueryTimeout(30); // set timeout to 30 sec.
				ResultSet rs = null;
				int i = 0;
				while (i < 1) {
					i++;
					// 查询sql
					/**查询实时数据表 RT_TABLE
					 * 所需字段
					 * name_f = 'public.sys.PDB_OS_CPU_USAGE' 数据点的位置(必填)
					 * 若需要查询某张表下所有点的数据,则输入库名加表名即可,例如:PUBLIC.SYS
					 * 查询一个数据库下所有点的实时数据同理,若查询该数据连接的所有数据,则name_f为空字符串即可
					 * 可查询字段
					 * ID_F 数据id
					 * NAME_F 数据点的位置
					 * DESC_F 实时数据描述
					 * TIME_F 实时数据的时间
					 * DATE_TYPE 数据类型
					 * UNIT_F 数据单位
					 * QUALITY_F 数据质量是否完好
					 * VALUE_F 查询数据的值
					 */
//					String sql = "select id_f,name_f,DESC_F,TIME_F,DATE_TYPE,UNIT_F,QUALITY_F,VALUE_F from RT_TABLE where name_f = 'PUBLIC.SYS.PDB_PROC_CPU_USAGE' ";
					String sql = "select * from RT_TABLE where name_f = 'public.sys' ";
					// 运行sql发起请求
					rs = statement.executeQuery(sql);
					// 查询结果存储在ResultSet
					System.out.println("Query realtime data from table: rt_table.");
					while (rs.next()) {
						// read the result set
						System.out.println("id_f:" + rs.getString("id_f") + ",name_f:" + rs.getString("name_f")+ ",DESC_F:" + rs.getString("DESC_F")+ ",TIME_F:" + rs.getString("TIME_F")+ ",DATE_TYPE:" + rs.getString("DATE_TYPE")+ 
								",UNIT_F:"+ rs.getString("UNIT_F")+ ",QUALITY_F:" + rs.getString("QUALITY_F")+ ",VALUE_F:" + rs.getString("VALUE_F"));	}
					System.out.println("Count: " + rs.getRow());

				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				e.printStackTrace();
			} finally {
				try {

					if (statement != null) {
						statement.close();
					}
					if (connection != null) {
						connection.close();
					}
				} catch (SQLException e) {
					System.err.println(e);
				}
			}
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
			return;
		}
		return;
	}
}

示例运行结果:

Query realtime data from table: rt_table.
id_f:1001000001,name_f:PUBLIC.SYS.PDB_OS_CPU_USAGE,DESC_F:System total cpu load rate,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:%,QUALITY_F:GOOD,VALUE_F:7.910493
id_f:1001000002,name_f:PUBLIC.SYS.PDB_OS_MEM_USAGE,DESC_F:System physical memory usage rate,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:%,QUALITY_F:GOOD,VALUE_F:88.0
id_f:1001000003,name_f:PUBLIC.SYS.PDB_DISK_READ_SPEED,DESC_F:System disk read speed,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:m/s,QUALITY_F:GOOD,VALUE_F:180.29045
id_f:1001000004,name_f:PUBLIC.SYS.PDB_DISK_WRITE_SPEED,DESC_F:System disk write speed,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:m/s,QUALITY_F:GOOD,VALUE_F:202.0838
id_f:1001000005,name_f:PUBLIC.SYS.PDB_NET_READ_SPEED,DESC_F:System net read speed,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:m/s,QUALITY_F:GOOD,VALUE_F:0.0
id_f:1001000006,name_f:PUBLIC.SYS.PDB_NET_WRITE_SPEED,DESC_F:System net write speed,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:m/s,QUALITY_F:GOOD,VALUE_F:0.0
id_f:1001000007,name_f:PUBLIC.SYS.PDB_PROC_CPU_USAGE,DESC_F:ProcessDB cpu load rate,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:%,QUALITY_F:GOOD,VALUE_F:0.0
id_f:1001000008,name_f:PUBLIC.SYS.PDB_PROC_MEM_USED,DESC_F:ProcessDB physical memory used,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:11.0
id_f:1001000009,name_f:PUBLIC.SYS.PDB_FREE_DISK,DESC_F:System disk free space,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:uint32,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:61418
id_f:1001000010,name_f:PUBLIC.SYS.PDB_HANDLE_COUNT,DESC_F:Used handle count,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:uint32,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:635
id_f:1001000011,name_f:PUBLIC.SYS.PDB_OS_RUNNING_TIME,DESC_F:OS running time,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:H,QUALITY_F:GOOD,VALUE_F:641.4868
id_f:1001000012,name_f:PUBLIC.SYS.PDB_PROC_RUNNING_TIME,DESC_F:ProcessDB running time,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:float32,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:8612.917
id_f:1001000013,name_f:PUBLIC.SYS.PDB_PROC_THREAD_COUNT,DESC_F:ProcessDB thread count,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:int16,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:124
id_f:1001000014,name_f:PUBLIC.SYS.PDB_AVAILABLE_DISK,DESC_F:System disk available space,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:uint32,UNIT_F:M,QUALITY_F:GOOD,VALUE_F:61418
id_f:1001000015,name_f:PUBLIC.SYS.PDB_OS_TYPE,DESC_F:System disk available space,TIME_F:2022-11-08 15:26:03.0,DATE_TYPE:string,UNIT_F:N/A,QUALITY_F:BAD,VALUE_F:Windows
Count: 15
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值