暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用JDBC连接数据库

原创 酷哥 2022-05-23
385

操作步骤

1. 准备连接环境

步骤1  修改数据库的pg_hba.conf文件。

在GS_HOME中查找pg_hba.conf文件,本实验中数据库GS_HOME设置的为/gaussdb/data/db1,实际操作中GS_HOME地址可以查看安装时的配置文件:<PARAM name="dataNode1" value="/gaussdb/data/db1"/>。

cd /gaussdb/data/db1
vi pg_hba.conf
复制

输入“:90”找到对应位置,然后输入“i”切换到INSERT模式,将以下内容添加进pg_hba.conf文件,添加后按下“ESC”键,退出INSERT模式,输入“:wq”后回车保存。

# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.19/32 trust
host all all 0.0.0.0/0 sha256
# IPv6 local connections:
host all all ::1/128 trust
复制

使用omm用户登陆,使用gs_ctl将策略生效。

su - omm
gs_ctl reload -D /gaussdb/data/db1/
复制

返回结果为:

[2020-07-23 15:39:55.398][71828][][gs_ctl]: gs_ctl reload ,datadir is -D "/gaussdb/data/db1"
server signaled
复制

注:如果之前没有启动过数据库,返回结果如下,继续操作即可:

步骤2 使用omm用户登陆数据库给dbuser用户授权,并退出数据库。

gsql -d postgres -p 26000 -r

postgres=# alter role dbuser createrole createdb;
ALTER ROLE

postgres=# \q
复制

步骤3 修改数据库侦听地址。

在GS_HOME中,本实验中数据库GS_HOME设置的为/gaussdb/data/db1。

cd /gaussdb/data/db1
vi postgresql.conf
复制

输入“:60”找到对应位置,然后输入“i”切换到INSERT模式,将listen_addresses的值修改成为*,修改后按下“ESC”键,退出INSERT模式,输入“:wq”后回车保存。

#listen_addresses = '192.168.0.19' # what IP address(es) to listen on;
listen_addresses = '*'
复制

修改完成后重启数据库生效(-D后面的数据库默认路径,需要根据实际情况进行修改)。

gs_ctl restart -D /gaussdb/data/db1/
复制

步骤4 下载Java连接openGauss的驱动包,并将其导入对应的使用工具。

通过以下链接,下载驱动包

https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/arm/openGauss-1.1.0-JDBC.tar.gz

假设文件存放在d:\Download目录下,并进行解压,解压后文件为“postgresql.jar”。

步骤5 创建测试数据库demo。

使用gsql工具登陆数据库,并输入dbuser密码(如:Gauss#3demo)。

gsql -d postgres -p 26000 -U dbuser -r
复制

创建数据库demo。

create database demo ENCODING 'UTF8' template = template0;
复制

切换到demo数据库,并输入dbuser密码(如:Gauss#3demo)。

\connect demo;
复制

步骤6 创建名为demo的schema,并设置demo为当前的schema。

CREATE SCHEMA demo;
复制

将默认搜索路径设为demo。

SET search_path TO demo;
复制

步骤7 创建测试表websites。

CREATE TABLE websites (
id int NOT NULL,
name char(20) NOT NULL DEFAULT '',
url varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (id)
);
COMMENT ON COLUMN websites.name IS '站点名称';
复制

步骤8 插入数据。

INSERT INTO websites VALUES
('1', 'openGauss', 'https://opengauss.org/zh/'),
('2', '华为云', 'https://www.huaweicloud.com/'),
('3', 'openEuler', 'https://openeuler.org/zh/'),
('4', '华为support中心', 'https://support.huaweicloud.com/');
复制

步骤9 退出数据库。

\q
复制

2. 确定26000端口是否放开

步骤1 打开华为云首页,登录后进入“控制台”,点击“弹性云服务器ECS”进入ECS列表。



步骤2 在云服务器控制台找到安装数据库主机的ECS,点击查看基本信息,找到安全组。




步骤3 点击进入安全组,选择“入方向规则”并“添加规则”,进行26000端口设置。



确定后,可以看到入网规则多了“TCP:26000”,如下图:


3. 下载并安装JDK

步骤1 下载JDK。

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html



步骤2 点击jdk-8u261-windows-x64.exe进行安装。

默认设置即可,出现安装进度。


如下显示表示安装成功:


步骤3 查看安装目录。


4. 配置JDK环境变量

步骤1 右击“此电脑”选择“属性”,点击“高级系统设置”。



步骤2 点击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录。



“C:\Program Files\Java\jdk1.8.0_261”为JDK安装目录。

步骤3 编辑系统变量“path”。


在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)。

步骤4 新建系统变量“CLASSPATH”变量,输入“.” 即可。


步骤5 系统变量配置完毕,查询检验是否配置成功,运行cmd 输入java -version(java和 -version之间有空格)。

C:\Users\xxxxx>java -version
复制

如下所示,显示版本信息,则说明安装和配置成功。

java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
复制

5. 连接openGauss并执行java代码

步骤1 使用Java程序连接数据库并进行查询(注:请用户根据实际情况替换红字内容,修改jdbc:postgresql://弹性公网IP:26000/demo中弹性公网IP信息,USER = "dbuser"连接数据库的用户及密码PASS = "Gauss#3demo")。

在d:\Download\中创建openGaussDemo.java文件,文件内容如下,注意红字部分要按照实际情况进行替换:

import java.sql.*;

public class openGaussDemo {




static final String JDBC_DRIVER = "org.postgresql.Driver";

static final String DB_URL = "jdbc:postgresql://弹性公网IP:26000/demo?ApplicationName=app1";

// 数据库的用户名与密码,需要根据自己的设置

static final String USER = "dbuser";

static final String PASS = "Gauss#3demo";

public static void main(String[] args) {

Connection conn = null;

Statement stmt = null;

try{

// 注册 JDBC 驱动

Class.forName(JDBC_DRIVER);




// 打开链接

System.out.println("连接数据库...");

conn = DriverManager.getConnection(DB_URL,USER,PASS);




// 执行查询

System.out.println(" 实例化Statement对象...");

stmt = conn.createStatement();

String sql;

sql = "SELECT id, name, url FROM demo.websites";

ResultSet rs = stmt.executeQuery(sql);




// 展开结果集数据库

while(rs.next()){

// 通过字段检索

int id = rs.getInt("id");

String name = rs.getString("name");

String url = rs.getString("url");




// 输出数据

System.out.print("ID: " + id);

System.out.print(", 站点名称: " + name);

System.out.print(", 站点 URL: " + url);

System.out.print("\n");

}

// 完成后关闭

rs.close();

stmt.close();

conn.close();

}catch(SQLException se){

// 处理 JDBC 错误

se.printStackTrace();

}catch(Exception e){

// 处理 Class.forName 错误

e.printStackTrace();

}finally{

// 关闭资源

try{

if(stmt!=null) stmt.close();

}catch(SQLException se2){

}// 什么都不做

try{

if(conn!=null) conn.close();

}catch(SQLException se){

se.printStackTrace();

}

}

System.out.println("Goodbye!");

}

}
复制

步骤2 在安装Java的本机,打开cmd对Java程序编译后执行。

在cmd中,进入d:\Download\目录,先对Java程序进行编译(进入Java程序的目录)。

D:\Download> javac -encoding utf-8 -cp d:\Download\postgresql.jar openGaussDemo.java
复制

再执行以下命令。

D:\Download> java -cp .;D:/Download/postgresql.jar openGaussDemo
复制

步骤3 执行结果。

执行结果如下:

连接数据库...

实例化Statement对象...

ID: 1, 站点名称: openGauss, 站点 URL: https://opengauss.org/zh/

ID: 2, 站点名称: 华为云, 站点 URL: https://www.huaweicloud.com/

ID: 3, 站点名称: openEuler, 站点 URL: https://openeuler.org/zh/

ID: 4, 站点名称: 华为support中心, 站点 URL: https://support.huaweicloud.com/

Goodbye!
复制















「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 操作步骤
    • 1. 准备连接环境
    • 2. 确定26000端口是否放开
    • 3. 下载并安装JDK
    • 4. 配置JDK环境变量
    • 5. 连接openGauss并执行java代码