文章目录
- [任务二十一 使用JDBC访问openGauss数据库](#任务二十一 使用JDBC访问openGauss数据库)
-
- 任务目标
- 实施步骤
- 二、下载并安装JavaSE8
-
- [1 下载JavaSE8](#1 下载JavaSE8)
- 安装Java8SE并配置环境变量
- 三、下载并安装eclipse
- 四、下载并安装openGauss的JDBC驱动包
- 五、使用IDEA编写JDBC测试程序
-
- [1 使用IDEA的SSH连接虚拟机](#1 使用IDEA的SSH连接虚拟机)
- [2 创建项目并连接数据库](#2 创建项目并连接数据库)
- [3 JAR包的构建](#3 JAR包的构建)
- 六、验证JDBC对数据库的操作
- 七、使用VScode远程编写JDBC测试程序
-
- [1. SSH连接远程](#1. SSH连接远程)
- [2. 创建工程](#2. 创建工程)
- [3. 添加依赖包的方式](#3. 添加依赖包的方式)
- [4. 运行](#4. 运行)
任务二十一 使用JDBC访问openGauss数据库
任务目标
初步学握JDBC的编程方法。
实施步骤
一、准备工作
使用Linux用户omm,打开一个Linux终端窗口,执行下面的命令和SQL语句,创建用于测试JDBC的数据库用户test、表空间test_ts、数据库testdb:
sql
gsql -d postgres -p 26000 -r
CREATE USER test IDENTIFIED BY 'test@ustb2020';
ALTER USER test SYSADMIN;
CREATE TABLESPACE test_ts RELATIVE LOCATION 'tablespace/test_ts1';
CREATE DATABASE testdb WITH TABLESPACE test_ts;
GRANT ALL ON DATABASE testdb TO test;
\q
执行下面的命令和SQL语句,创建用于测试JDBC的测试表:
sql
gsql -d testdb -h 192.168.100.91 -U test -p 26000 -W test@ustb2020 -r
create table test_tbl (
ID serial primary key,
InsertTime timestamp
);
\q
二、下载并安装JavaSE8
下载JavaSE8介质jdk-8u241-linux-x64.tar.gz,使用Linux的root用户,将其拷贝到/root/Desktop目录下,并执行如下的命令,安装JavaSE8:
1 下载JavaSE8
congOracle官网找到对应版本的JavaSE8。
有可能在自己的Windows电脑上复制的连接不对,原因是Oracle需要你先登陆,登陆完成后就可以复制到正确的下载链接了。
当然,这里笔者也提供了一个链接,但是具体能否使用不是很确定,不过应该问题不大。
需要注意的是,首先我们使用root用户,其次工作目录是**/root/Desktop**。
bash
cd /root/Desktop
wget https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1733822964_e0a6be5aef084ff5e51bde5c7de09639
下载完成后可以发现自己的桌面多了一个文件压缩包:
给他重名一下吧,改成jdk-8u241-linux-x64.tar.gz
,接下来我们就可以开始安装和环境变量的配置了。
安装Java8SE并配置环境变量
bash
cd /root/Desktop #该目录是介质所在目录
tar xfz jdk-8u241-linux-x64.tar.gz -C /usr
ln -s /usr/jdk1.8.0_241 /usr/jdk
cat>> /etc/profile<<EOF
export JAVA_HOME=/usr/jdk
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
source /etc/profile
javac -version
成功后的情况如下:
三、下载并安装eclipse
eclipse是什么呀,椭圆?听起来好帅啊,所以我们还是用IDEA吧。
相信大家的Windows or MacOS电脑都会有IDEA吧,就算没有总也会有VScode吧,所以我先跳过下载eclipse了,回头直接在IDEA和VScode上展示如何使用JDBC连接数据库。
四、下载并安装openGauss的JDBC驱动包
这里需要注意的是,我们需要下载对应虚拟机上openGauss数据库版本的JDBC,所以我们首先查看一个数据库的版本,命令如下:
bash
gs_ctl --version
笔者的版本是6.0.0
bash
[omm@test /]$ gs_ctl --version
gs_ctl (openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 18:38:08 commit 0 last mr
从地址 https:/opengauss.org/zh/download.html下载JDBC驱动包openGauss-6.0.0-JDBC.tar.gz如下图所示。
同Oracle一样,我们也需要先登陆才能获得下载连接,笔者已经完成了登陆,已将自己的下载连接放在了下面的命令中,不过可能会过期,所以无效的话请读者自己登陆后自信获取自己的下载链接地址🔗。
bash
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/6.0.0/CentOS7/x86/openGauss-JDBC-6.0.0.tar.gz
下载成功后桌面会出现一个新的文件压缩包:
JDBC驱动包与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。
使用Linux的root用户,执行下面的命令,将JDBC驱动包安装到Java的库路径下:
sql
cd /root/Desktop #该目录是介质所在目录
cp openGauss-JDBC-6.0.0.tar.gz /usr/jdk/lib
cd /usr/jdk/lib
tar xvf openGauss-JDBC-6.0.0.tar.gz
ls -l postgresql.jar
五、使用IDEA编写JDBC测试程序
但是这里笔者遇到了一个问题,就是想不到怎么将这个项目打包成一个JAR包,也许回头会想到办法再补充到这里
1 使用IDEA的SSH连接虚拟机
第一次连接需要下载IDEA的后台服务程序,将近2GB,整个过程比较简单,笔者不赘述了,下面是介绍如何SSH的位置:
等到一切下载完成后就可以连接虚拟机,不过我们需要使用ens34那块NAT类型的网卡,原因见实验零中的拓扑图咯。
账号是root,密码就是你root用户的密码。
2 创建项目并连接数据库
新创建的项目会像如下这样:
然后我们需要将提供的jdbc测试代码加入到项目中,由于java非常注重模块,所以文件目录结构必须如下图中给出的一样:
测试用的代码如下:
java
package testjdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
public class testjdbc {
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con;
//驱动程序名
String driver = "org.postgresql.Driver";
//URL指向要访问的数据库名testdb
String url = "jdbc:postgresql://192.168.100.91:26000/testdb";
//openGauss用户名
String user = "test";
//openGauss数据库用户test的密码
String password = "test@ustb2020";
try {
//加载驱动程序
Class.forName(driver).newInstance();
//第一步,使用getConnection()方法,连接openGauss数据库!
con = DriverManager.getConnection(url,user,password);
System.out.println("数据库数据成功获取!!");
if(!con.isClosed())
System.out.println("Succeeded connecting to the openGauss:testdb");
//第二步,创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
// 以下的代码,用来构建要执行的SQL语句:insert语句
java.util.Date date = new java.util.Date(); //创建时间对象
Timestamp timeStamp = new Timestamp(date.getTime()); // 将日期时间转换为数据库中的timestamp类型
// 格式化时间日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while(true){
//系统睡眠1秒
Thread.sleep(1000);
//通过当前时间来建立时间戳
timeStamp = Timestamp.valueOf(LocalDateTime.now());
//SQL语句编写的同时将时间格式化
String sql2 = "insert into test_tbl(InsertTime) values ('"+sdf.format(timeStamp)+"');";
//执行SQL语句
statement.executeUpdate(sql2);
}
// rs.close();
} catch(ClassNotFoundException e) {
//数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
// e.printStackTrace();
}
catch(SQLException e) {
//数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
System.out.println("异常退出!");
}
}
}
此外,我们需要导入我们从openGauss官网下载的JDBC的连接JAR包,如下图:
需要注意的一件事就是,我们其实需要导入的是名字为postgresql.jar
的包,而不是opengauss-jdbc-6.0.0.jar
包,只能说无话可说😒
导入正确的包之后,点击绿色的运行箭头就可以运行程序了,正确的运行情况如下:
3 JAR包的构建
暂缺
六、验证JDBC对数据库的操作
sql
gsql -d testdb -h 192.168.100.91 -U test -p 26000 -W test@ustb2020 \
-c "select * from test_tbl"
提供的测试代码每过1s会向数据的test_tbl表插入一个记录,如上图所示。
七、使用VScode远程编写JDBC测试程序
最终结果如下图:
使用过程同IDEA一致,唯一的区别是:VScode的轻量化编辑器,所以他的服务器程序安装比IDEA快的多,可配置性也高于IDEA。
大致过程如下:
1. SSH连接远程
这里有两种方法,其一是直接再vscode使用ssh连接,首先使用shift + ctrl + p
打开功能区,然后输入ssh,选择Connect to Host...,然后输入要连接的虚拟机的配置即可。
2. 创建工程
后面也是右键相应的文件加选择New modules等等
3. 添加依赖包的方式
不同于IDEA的方式,VScode添加依赖包都是通过配置.vscode下的setting.json来解决的,笔者的配置文件如下:
json
{
"java.project.sourcePaths": [
"src"
],
"java.project.outputPath": "bin",
"java.project.referencedLibraries": [
"lib/**/*.jar",
"/usr/jdk/lib/postgresql.jar"
]
}
整个文件的目录如下:
4. 运行
打开我们的testjdbc.java的代码,右上角的运行箭头一点即可。