JDBC连接GaussDB云数据库操作示例

该文详细介绍了如何在华为云环境中创建GaussDB数据库,建立测试库表,创建Java工程,并通过JavaJDBC执行插入、更新和查询操作。文章还涉及了角色权限设置和公网IP的获取,确保本地与云数据库的连接。最后,验证了Java脚本执行结果与云数据库数据的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、实验环境

二、登录华为云创建测试库表

1、登录GaussDB云数据库

2、建库、建表,用于测试

3、新增普通角色(用户)用于登录及访问测试(可选)

4、获取对应的公网IP

三、创建java工程

1、创建java工程

2、添加jar包

3、编辑Java代码

四、执行并查看测试结果

一、实验环境

1、本地JDB版本:本实验版本:JDK版本:Java 11.0.17

(登录网址:Java Downloads | Oracle  ,选择对应jdk版本下载安装即可)

2、华为云环境:广州-友好用户环境,弹性公网

二、登录华为云创建测试库表

1、登录GaussDB云数据库

以IAM用户登录:

 依次进入:“服务列表——数据管理服务 DAS——开发工具——登录对应的实例,如下图:

 

点击测试连接,提示连接成功,点确认进入:

2、建库、建表,用于测试

创建java_test库:

 创建customer_t1表:

CREATE TABLE customer_t1(

       c_customer_id INTEGER

     , c_customer_name VARCHAR(32)

);

3、新增普通角色(用户)用于登录及访问测试(可选)

新增普通角色test_role,默认购选登录权限(赋权connect)

赋予test_role查询表customer_t1的权限。

GRANT SELECT on public.customer_t1 TO test_role;

 (Tip: 测试时将java脚本中的连接用户名和秘密 替换成创建时设置的即可)

4、获取对应的公网IP

获取公网IP用于本地连接GaussDB云数据库:

 在本地测试ip 是否ping的通(win+r  —— cmd —— ping ip):

三、创建java工程

1、创建java工程

2、添加jar包

1)下载并解压获取对应gsjdbc4.jar: https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1660794000209/GaussDB_opengauss_client_tools.zip

2)在工程src目录下创建lib文件夹,并将解压后的gsjdbc4.jar复制粘贴到此目录

3)手动将其添加到工程中

 

3、编辑Java代码

连接GaussDB云数据库、执行insert、update、select

package gaussdb_jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class GaussDB_jdbc {

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

    static final String DB_URL = "jdbc:postgresql://*.*.*.*:8000/java_test";

                                 

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

    static final String USER = "****";

    static final String PASS = "****";

   

    // 执行insert

    public static void InsertData(Connection conn){

        Statement stmt = null;

           try {

              stmt = conn.createStatement();

              String sql;

              sql = "INSERT INTO public.customer_t1(c_customer_id, c_customer_name) VALUES(1001,'张三');"

                  + "INSERT INTO public.customer_t1(c_customer_id, c_customer_name) VALUES(1002,'李四');"

                  + "INSERT INTO public.customer_t1(c_customer_id, c_customer_name) VALUES(1003,'王五');";

              ResultSet rs = stmt.executeQuery(sql);

              rs.close();

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

    }

   

    // 执行update

    public static void UpadteData(Connection conn){

        Statement stmt = null;

           try {

              stmt = conn.createStatement();

              String sql;

              sql = "UPDATE customer_t1 SET c_customer_name ='jdbc' WHERE c_customer_id =1003 ";

              ResultSet rs = stmt.executeQuery(sql);

              rs.close();

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

    }

     

    // 执行select

    public static void SelectData(Connection conn){

        Statement stmt = null;

           try {

              stmt = conn.createStatement();

              String sql;

              sql = "SELECT c_customer_id, c_customer_name FROM public.customer_t1";

              ResultSet rs = stmt.executeQuery(sql);

     

              // 展开结果集数据库

              while(rs.next()){

                  // 通过字段检索

                  String column1 = rs.getString("c_customer_id");

                  String column2 = rs.getString("c_customer_name");

                  // 输出数据

                  System.out.print("c_customer_id: " + column1);

                   System.out.print(", c_customer_name: " + column2);

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

              }

              rs.close();

           } catch (SQLException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

    }

   

   

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       // 打开链接

       try {

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

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

                                      

           // 执行插入数据

           InsertData(conn);         

                      

           //执行更新数据

           UpadteData(conn);

                      

           //执行查看

           SelectData(conn);               

                      

           conn.close();

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

    }

}

Tip:ip地址、用户及秘钥根据实际替换即可。

四、执行并查看测试结果

执行java脚本前的数据库表情况(0条记录):

 通过JAVA脚本访问GaussDB云数据库,并进行库表操作:

1)JAVA脚本执行情况:

 2)数据库表查询情况(插入三条记录,更新了一条记录):

结论:以上结果均与GaussDB云数据端的数据完全匹配,测试结果正确,jdbc访问GaussDB顺利完成。

另,大家可以通过新增角色(或用户)进行测试,例如参考上文中的第二大点中的第3小点进行测试。 本次实验到此结束,欢迎大家互动、交流!

### 如何连接 GaussDB 数据库 #### 使用 DBeaver 连接 GaussDB 数据库 为了使 DBeaver 能够成功连接GaussDB 数据库,需先下载并配置相应的 JDBC 或 ODBC 驱动程序。这可以通过访问华为云官方文档来完成,其中提供了详细的说明和必要的驱动文件链接[^1]。 ```bash # 下载JDBC或ODBC驱动 wget https://support.huaweicloud.com/dws_faq/gaussdb_dws_07_0008.html ``` #### ARM环境下安装GaussDB单机版 对于希望在ARM架构服务器上运行 GaussDB 的用户来说,解压缩特定版本的 GaussDB 安装包是第一步操作。具体命令如下所示: ```bash tar -zxf GaussDB-Kernel_*_Kylin_64bit.tar.gz ``` 此过程会释放出所有必需的安装文件以便后续设置工作能够顺利开展[^2]。 #### 华为云平台上的GaussDB部署 如果计划利用华为云计算资源快速建立自己的 GaussDB 实验环境,则应遵循《GaussDB 数据库实验环境搭建指导》中的指示,在线订购所需的服务实例,并按照指引逐步构建完整的数据库系统[^3]。 #### gsql客户端连接方法 当已经拥有了一个正在运行的 GaussDB 实例之后,就可以采用 `gsql` 命令行工具来进行远程登录了。在此之前要确保完成了 ECS 创建、网络参数确认以及安全组策略调整等一系列前置准备工作;接着依照下述流程执行实际连接动作: - 查询目标主机 IP 地址与监听端口; - 测试两者间的 TCP 层面可达性; - 获取最新版 JDBC/ODBC 接入组件; - 执行最终的数据链路建立尝试。 ```bash # SSL模式下的连接示例 gsql -h your_host_ip -p port_number -U user_name -d database_name --sslmode=require ```
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值