当前位置: 代码网 > it编程>编程语言>Java > Java 使用JDBC操作PI数据库的方法

Java 使用JDBC操作PI数据库的方法

2025年08月14日 Java 我要评论
一、概述(1)环境:windows 系列、jre 8 及以上(2)资料:pi 官网 https://techsupport.osisoft.com/(3)常用的访问pi数据库的方案有:①使用 jdbc

一、概述

(1)环境:windows 系列、jre 8 及以上
(2)资料:pi 官网 https://techsupport.osisoft.com/
(3)常用的访问pi数据库的方案有:①使用 jdbc driver 或 odbc driver;②使用 pi web api;③使用 sdk
本次,我们选择使用 jdbc driver 来实现java 访问pi数据库。

二、jdbc访问pi数据库原理

pi的jdbc驱动程序是一个java数据库连接驱动,通过sql查询提供了强大的数据访问pi系统 。pi jdbc driver 提供了一个类似于java 访问mysql或者oracle 同样的方式。

但是,jdbc driver 是 通过中间层 pi sql data access server 来实现 pi jdbc driver 和 pi oledb enterprise/pi oledb providers 之间的交互的。
pi sql das(ole db)在客户端 通过 net.tcp 或者 https 来提供安全的网络连接

三、软件安装

(1)百度网盘下载地址:
链接: https://pan.baidu.com/s/1qhlqyod_yededw4d67f9pq?pwd=jzya
提取码: jzya

(2)安装顺序应该是:

  • ole db
  • pi sql data access server
  • pi jdbc driver 2016

1.安装 pi oledb

进入pi oledb目录,运行:pi oledb_2016_.exe

在default server填写pi服务器的ip地址:

2.安装pi sql data access server (ole db)

进入目录,运行:pisqldas_2016 (1.5.16090.1)_.exe

3.安装pi jdbc driver

进入pi jdbc (windows)目录,运行:pi jdbc_2016_.exe

5.安装pi的sql查询工具

为了方便使用还可以一个pi odbc程序,该程序包含一个工具sql commander lite,可以用来查询sql。

通过上述的安装步骤之后,从开始菜单打开sql commander lite,可以连接上 pi 服务,并且使用 类似 sql 语句去查询pi 中的数据。具体 sql语句 查看 帮助文档如pi-oledb-enterprise-2016-r2-user-guide.pdf

四、使用jdbc操作pi数据库

1.springboot集成pijdbc驱动

从 pi jdbc driver 安装后的目录下取出 pihome\jdbc\pijdbcdriver.jar。将其放在项目的lib 下,引入项目中。

<!-- 引入本地jar包 -->
        <dependency>
            <groupid>com.osisoft</groupid>
            <artifactid>pijdbcdriver</artifactid>
            <version>1.5.16096</version>
            <scope>system</scope>
           <systempath>${project.basedir}/lib/pijdbcdriver.jar</systempath>
        </dependency>

2.常用jdbc访问数据库的方式即可查询pi数据库

package com.bkc.test;
import java.sql.connection;
import java.sql.databasemetadata;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.sqlexception;
import java.util.properties;
public class getbametadata
{
    public static void main(string[] args)
    {
        // arguments: java getbametadata dasname [trustedconnection protocolorder loglevel]
        // example: java getbametadata mydas yes nettcp:5462 2
        string dasname = "localhost";
        string datasourcename = "192.168.1.32";
        string istrustedconnection = "yes";
        string protocolorder = "https/soap:5461,nettcp:5462";
        string loglevel = "0";
        system.out.println("\narguments:");
        system.out.println("\tdata access server name: " + dasname);
        system.out.println("\tuse trusted connection?: " + istrustedconnection);
        system.out.println("\tprotocol order: " + protocolorder);
        system.out.println("\tlog level: " + loglevel);
        connection connection = null;
        string url = "";
        string driverclassname = "com.osisoft.jdbc.driver";
        resultset resultset = null;
        properties properties = new properties();
        //url = "jdbc:piintegrator://" + dasname;
        //url = "jdbc:pioledb://" + dasname + "/data source=" + datasourcename + "; integrated security=sspi";
        url = "jdbc:pioledb://" + dasname + "/data source=" + datasourcename + "; integrated security=sspi";
        system.out.println(url);
        properties.put("trustedconnection", istrustedconnection);
        properties.put("protocolorder", protocolorder);
        properties.put("logconsole", "true");
        properties.put("loglevel", loglevel);
        try
        {
            class.forname(driverclassname).newinstance();
            connection = drivermanager.getconnection(url, properties);  
            databasemetadata metadata = connection.getmetadata();
            system.out.println(metadata.getdrivername() + " " + metadata.getdriverversion()); 
            system.out.println(metadata.getdatabaseproductname());
            system.out.println(metadata.getdatabaseproductversion() + "\n");
            // get all tables and views
            string ttypes[] = new string[] {"table", "view"};
            resultset = metadata.gettables(null, null, "%", ttypes);
            if(!resultset.first())
                throw new exception ("no rows in the result set.");
            // we are just interested in those 4 columns
            system.out.print("catalog || ");
            system.out.print("schema || ");
            system.out.print("table || ");
            system.out.println("table type\n");
            // read the data
            while (!resultset.isafterlast()) {
                system.out.print(resultset.getstring("table_cat") + " || ");
                system.out.print(resultset.getstring("table_schem") + " || ");
                system.out.print(resultset.getstring("table_name") + " || ");
                system.out.println(resultset.getstring("table_type"));
                resultset.next();
            }
        }
        catch (exception ex)
        {
            system.err.println(ex);
        }
        finally
        {
            try {
                if(resultset != null) resultset.close();
                if(connection != null) connection.close();
            } catch (sqlexception ex) {
                system.err.println(ex);
            }
        }   
    }
}

到此这篇关于java 使用jdbc操作pi数据库的文章就介绍到这了,更多相关java jdbc操作pi内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com