Java?使用JDBC操作PI數(shù)據(jù)庫的方法
一、概述
(1)環(huán)境:windows 系列、jre 8 及以上
(2)資料:PI 官網(wǎng) https://techsupport.osisoft.com/
(3)常用的訪問PI數(shù)據(jù)庫的方案有:①使用 JDBC Driver 或 ODBC Driver;②使用 PI Web Api;③使用 sdk
本次,我們選擇使用 JDBC Driver 來實現(xiàn)java 訪問PI數(shù)據(jù)庫。
二、JDBC訪問PI數(shù)據(jù)庫原理
PI的JDBC驅(qū)動程序是一個java數(shù)據(jù)庫連接驅(qū)動,通過SQL查詢提供了強大的數(shù)據(jù)訪問PI系統(tǒng) 。PI JDBC Driver 提供了一個類似于java 訪問Mysql或者Oracle 同樣的方式。
但是,JDBC Driver 是 通過中間層 PI SQL DATA Access Server 來實現(xiàn) PI JDBC driver 和 PI OLEDB Enterprise/PI OLEDB providers 之間的交互的。
PI SQL DAS(OLE DB)在客戶端 通過 Net.TCP 或者 HTTPS 來提供安全的網(wǎng)絡連接

三、軟件安裝
(1)百度網(wǎng)盤下載地址:
鏈接: https://pan.baidu.com/s/1SPLpKrfHBPGPzDgb9S_MOQ?pwd=hx7p
提取碼: hx7p
(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 中的數(shù)據(jù)。具體 sql語句 查看 幫助文檔如PI-OLEDB-Enterprise-2016-R2-User-Guide.pdf

四、使用JDBC操作PI數(shù)據(jù)庫
1.SpringBoot集成PIJDBC驅(qū)動
從 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訪問數(shù)據(jù)庫的方式即可查詢PI數(shù)據(jù)庫
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數(shù)據(jù)庫的文章就介紹到這了,更多相關java jdbc操作pi內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot基于數(shù)據(jù)庫實現(xiàn)定時任務過程解析
這篇文章主要介紹了SpringBoot基于數(shù)據(jù)庫實現(xiàn)定時任務過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
Java 網(wǎng)絡編程之 TCP 實現(xiàn)簡單的聊天系統(tǒng)
這篇文章主要介紹了Java 網(wǎng)絡編程之 TCP 實現(xiàn)簡單的聊天系統(tǒng),幫助大家更好的理解和學習Java 網(wǎng)絡編程,感興趣的朋友可以了解下2020-11-11
Spring集成MyBatis?及Aop分頁的實現(xiàn)代碼
這篇文章主要介紹了Spring集成MyBatis?及Aop分頁的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法
這篇文章主要介紹了Spring?MVC基于注解的使用JSON數(shù)據(jù)處理,json是一種輕量級的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語言,它易于閱讀和編寫,同時也易于機器解析和生成,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-05-05

