作者:2020
一、環境說明
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node1 ext]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
二、資料庫配置
1.配置資料庫引數,允許用戶登錄
資料庫組態檔postgresql.conf和pg_hba.conf中加上如下內容
[omm@node1 data]$ tail -4 postgresql.conf
listen_addresses = '0.0.0.0'
password_encryption_type = 0
log_directory = 'pg_log'
remote_read_mode=non_authentication
[omm@node1 data]$ tail -1 pg_hba.conf
host all all 0.0.0.0/0 md5
重啟資料庫
gs_om -t stop
gs_om -t start
2.創建連接用戶及資料庫
postgres=# create database jdbc_db;
CREATE DATABASE
postgres=# create user jdbc_usr password 'jdbc@123';
NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
postgres=# alter user jdbc_usr sysadmin;
ALTER ROLE
postgres=#
三、Java程式撰寫
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ConnTest {
//創建資料庫連接,
public static Connection GetConnection(String username, String passwd) {
String driver = "org.postgresql.Driver";
String sourceURL = "jdbc:postgresql://8.131.53.xxx:26000/jdbc_db";
Connection conn = null;
try {
//加載資料庫驅動,
Class.forName(driver).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
try {
//創建資料庫連接,
conn = DriverManager.getConnection(sourceURL,"jdbc_usr", "jdbc@123");
System.out.println("連接成功!");
} catch (Exception e) {
e.printStackTrace();
return null;
}
return conn;
}
;
/**
* 把查詢到的結果放入ResultSet
* 通過迭代的方法去讀取結果集中的查詢結果
* 輸出查詢結果
*/
public static void Select(Connection conn) {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT version()";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); //將查詢的結果放入ResultSet結果集中
/**
* 從結果集ResultSet中迭代取出查詢結果并輸出
*/
while(rs.next()) {
// String values = rs.getString("id");
String values = rs.getString("version");
System.out.println( "資料庫版本:"+values);
}
} catch (SQLException e) {
System.out.println("操作失敗o(╥﹏╥");
e.printStackTrace();
}
}
/**
* 主程式,逐步呼叫各靜態方法,
* @param args
*/
public static void main(String[] args) {
//創建資料庫連接,
Connection conn = GetConnection("jdbc_usr", "jdbc@123");
Select(conn);
//關閉資料庫連接,
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
四、程式測驗
1.放置jDBC驅動
將jdbc驅動放到jdk中的如下目錄,讓程式能找到驅動包
[root@node1 ext]# pwd
/usr/java/jdk1.8.0_301-amd64/jre/lib/ext
[root@node1 ext]# wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.1/x86/openGauss-2.0.0-JDBC.tar.gz
2021-12-01 17:30:52 (13.2 MB/s) - 已保存 “openGauss-2.0.0-JDBC.tar.gz” [4937896/4937896])
[root@node1 ext]# tar -zxvf openGauss-2.0.0-JDBC.tar.gz
postgresql.jar
2.運行程式
這里采用了倆種方式運行程式,一種是單個程式直接運行,另一個則是將Java程式打成jar在運行,這里簡單介紹一下
(1)單個程式運行
[root@node1 hello]# ls
conn.jar ConnTest.java MANIFEST.MF postgresql.jar
[root@node1 hello]# pwd
/root/java_program/hello
[root@node1 hello]# javac ConnTest.java
[root@node1 hello]# java ConnTest
連接成功!
資料庫版本:PostgreSQL 9.2.4 (MogDB 2.0.1 build f892ccb7) compiled at 2021-07-09 16:12:59 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(2)jar包運行
編譯ConnTest.java
[root@node1 hello]# javac ConnTest.java
撰寫MANIFEST.MF檔案
MANIFEST.MF檔案介紹
META-INF檔案夾相當于一個資訊包,目錄中的檔案和目錄獲得Java 2平臺的認可與解釋,用來配置應用程式、擴展程式、類加載器和服務,這個檔案夾和其中的 MANIFEST.MF檔案,在用jar打包時自動生成,執行jar檔案的時候,這個jar里是需要具備 META-INF/MANIFEST.MF的,否則java -jar就找不到main class,
[root@node1 hello]# cat MANIFEST.MF
Manifest-Version: 1.0
Main-Class: ConnTest
程式打包
[root@node1 hello]# jar -cvfm conn.jar MANIFEST.MF ConnTest.class
已添加清單
正在添加: ConnTest.class(輸入 = 2126) (輸出 = 1212)(壓縮了 42%)
運行程式
[root@node1 hello]# java -jar conn.jar
連接成功!
資料庫版本:PostgreSQL 9.2.4 (MogDB 2.0.1 build f892ccb7) compiledat 2021-07-09 16:12:59 commit 0 last mr onx86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
五、總結
上述文章簡單介紹了JDBC連接MogDB資料庫,資料如何配置,以及JDBC驅動如何加載,如何配置,并運行在Linux上,更多細節參考官方檔案https://docs.mogdb.io/zh/mogdb/v2.0.1/1-development-based-on-jdbc-overview
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385584.html
標籤:java
