java通过jdbc连接openplant(实时数据库)步骤

该连接过程类似连接mysql数据库

1、加载驱动程序

Class.forName("com.magus.jdbc.Driver");反射,使用装载当前类的类装载器来装载指定的类并且对其进行实例化

2、获取数据库连接对象

Connection conn = DriverManager.getConnection(url, username), password);
/**
    url = "jdbc:openplant://localhost:8200+"/RTDB";
    username = "root";
    password = "root";
**/

3、获取sql语句执行对象

Statement st = conn.createStatement();

4、执行sql语句

String sql = "select...";
ResultSet rs = st.execute(sql);

5、处理结果集

while (rs.next()){
    System.out.println(rs.getString(1));
}

6、依次关闭结果集rs、sql语句执行对象st、数据库连接对象conn

rs.close();
st.close();
conn.close();

综合代码

package com.connetMagus;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

public class ConnectToMagusDemo {
    public static String className = "com.magus.jdbc.Driver";
    // jdbc:产品系列://IP:端口/服务
    // jdbc:产品系列://IP:端口/
    private static ApplicationContext ctx =new ClassPathXmlApplicationContext("mesconfig.xml");
    private static BaseForMagus base = (BaseForMagus) ctx.getBean("magusbean");
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public static Connection connect() {
        Connection conn = null;
        try {
            String url = "jdbc:openplant://"+base.getAddress()+"/RTDB";
            Class.forName(className);//反射,使用装载当前类的类装载器来装载指定的类并且对其进行实例化
            conn = DriverManager.getConnection(url, base.getUser(), base.getPasswd());
        } catch (Exception e) {
            System.out.println("Connect faild: " + e.toString());
        }
        return conn;
    }

    public static boolean executeSQL(String sql) {
        try {
            Connection conn = connect();
            Statement st = conn.createStatement();
            boolean success = st.execute(sql);
            st.close();
            conn.close();
            return success;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    /**向scada实时表更新对应点名(gn)的值(av)**/
    public boolean setGnValue(String gn, String value){
        try {
            String sql = "insert into  realtime (AV, GN) values ('"+value+"','"+gn+"')";
            Connection conn = connect();
            Statement st = conn.createStatement();
            boolean success = st.execute(sql);
            st.close();
            conn.close();
            return success;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public String getGnValue(String gn){
        String value = "";
        try {
            String sql = "select AV from realtime where GN='"+gn+"'";
            Connection conn = connect();
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()){
                value = rs.getString(1);
            }
            rs.close();
            st.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return value;
    }

    public boolean setValueIOserver(String value){
        String sql = "insert into  realtime (AV, GN) values ( '"+value+"','LHJ.MSG.MSG_TO_IOSERVER')";
        return executeSQL(sql);
    }

    //查询IOserver值是否为空
    public boolean isIOserverNull(){
        boolean flag = false;
        String sql = "select AV from realtime where GN='LHJ.MSG.MSG_TO_IOSERVER'";
        try {
            Connection conn = connect();
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()){
                if(rs.getString(1).equals("")){
                    flag = true;
                }
            }
            rs.close();
            st.close();
            conn.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return flag;
    }

    //获取某个点的历史数据
    public List<String[]> getGnHisData(String gn, String startTime, String endTtme){
        List<String[]> list = new ArrayList<>();
        String sql = "select AV,TM from Archive where mode='raw' and interval='1h' and GN='"+gn+"' and TM between '"+startTime+"' and '"+endTtme+"'";
        try {
            Connection conn = connect();
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()){
                String[] strs = new String[2];
                strs[0] = rs.getString(1);
                strs[1] = rs.getString(2);
                list.add(strs);
            }
            rs.close();
            st.close();
            conn.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return list;
    }

//对查询结果进行整理
    private static void showResultSet(ResultSet rs) throws SQLException, InterruptedException {
        ResultSetMetaData rsmd = rs.getMetaData();
        String formatStr = "%-20s";
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            System.err.print(String.format(formatStr, rsmd.getColumnLabel(i).toUpperCase()) + "\t");
        }
        System.err.print("\n");
        Thread.sleep(100);
        while (rs.next()) {
            StringBuffer sb = new StringBuffer();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                if (rsmd.getColumnType(i) == Types.DATE) {
                    sb.append(sdf.format(rs.getDate(i)) + "\t");
                } else if (rsmd.getColumnType(i) == Types.BOOLEAN) {
                    sb.append(rs.getBoolean(i) + "\t");
                } else {
                    sb.append(String.format(formatStr, rs.getString(i)) + "\t");
                }
            }
            System.out.println(sb.toString());
        }

    }

    
    public static void main(String[] args){
        try {
            Connection conn = connect();
            String sql = "select * from realtime where GN='LHJ.SCADA.MES_ODR_8_3_2'";
            Statement st = null;
            st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            showResultSet(rs);
            rs.close();
            st.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}

xml文件

<bean id="magusbean" class="com.connetMagus.BaseForMagus">
        <property name="address" value="${magus.address}" />
        <property name="user" value="${magus.user}" />
        <property name="passwd" value="${magus.passwd}" />
</bean>

 

Guess you like

Origin blog.csdn.net/publicman_/article/details/114026652