数据库实验九--OpenGauss(使用JDBC连接数据库)

数据库实验九--OpenGauss(使用JDBC连接数据库)

本文作者:
https://www.cnblogs.com/Ck-0ff/【Ck_0ff】

实验要求

了解如何使用JDBC连接数据库。JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。openGauss库提供了对JDBC 4.0特性的支持,需要使用JDK1.8版本编译程序代码。
完成以下内容:

  1. 在openGauss中创建数据库、表;
  2. 使用jdbc连接到新创建的数据库;
  3. 在java程序中改变数据库中的值或者输出数据库中的值;
  4. 参考华为提供的实验手册:openGauss场景化综合应用实验。

使用JDBC连接数据库

在OpenGauss中创建数据库、表请参考之前的实验。

本实验选用JDBC为1.1.0版本

解压后,把postgresql.jar导入到我们要编写的java项目里。(ctrl+alt+shift+s导入jar包)

lib为在实验九项目下新建的目录,导入后完整项目结构如上图。

注意:远程登录不允许使用omm用户
我们需要重新新建一个用户。同时需要授予新用户权限


接着我们要配置客户端接入认证,运行远程连接(这步要退出openGauss,在命令行执行)
例如,下面示例中配置允许IP地址为10.10.0.30的客户端访问本机。

    gs_guc set -N all -I all -h "host all shiyanjiu 10.10.0.30/32 sha256"

另外,我们还需修改postgresql.confpg_hba.conf文件

此文件位于postgresql数据文件目录中,默认/var/lib/pgsql/data/。将postgresql.conf修改如下:listen_addresses = '*'

pg_hba.conf中增加需要连接该数据库主机的ip地址。如下所示,增加对主机0.0.0.0的信任。

host    all             all             0.0.0.0/0         sha256

先使用find命令查找文件地址(不连接数据库,登陆root账户,并且用cd /返回根目录)

find -name postgresql.conf


用vi修改:

vi postgresql.conf

进入vi后先按i进入插入模式,找到listen_addresses ,修改


esc,之后按:wq保存退出

这样第一个文件就修改完了。
同样的方法修改第二个文件pg_hba.conf


运行java代码:

package opengauss;import java.sql.*;public class connectsql {    //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名密码来连接数据库。    public  static Connection getConnect(String username, String passwd)    {        //驱动类。        String driver = "org.postgresql.Driver";        //数据库连接描述符。        String sourceURL = "jdbc:postgresql://192.168.56.124:26000/postgres";        Connection conn = null;        try        {            //加载驱动。            Class.forName(driver);        }        catch( Exception e )        {            e.printStackTrace();            return null;        }        try        {            //创建连接。            conn = DriverManager.getConnection(sourceURL, username, passwd);            System.out.println("Connection succeed!");        }        catch(Exception e)        {            e.printStackTrace();            return null;        }        return conn;    }    public static void main(String[] args) {        // TODO 自动生成的方法存根        new connectsql();        connectsql.getConnect("shiyanjiu","openGauss@123");    }}

连接成功

执行查询

我们现在来查询sc表,首先要把sc表的权限给shiyanjiu用户

GRANT ALL PRIVILEGES ON sc TO shiyanjiu;

之后修改java代码

package opengauss;import java.sql.*;public class connectsql {    //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。    public  static Connection getConnect(String username, String passwd)    {        //驱动类。        String driver = "org.postgresql.Driver";        //数据库连接描述符。        String sourceURL = "jdbc:postgresql://192.168.56.124:26000/db_cc";        Connection conn = null;        try        {            //加载驱动。            Class.forName(driver);        }        catch( Exception e )        {            e.printStackTrace();            return null;        }        try        {            //创建连接。            conn = DriverManager.getConnection(sourceURL, username, passwd);            Statement stmt = null;            // 执行查询            stmt = conn.createStatement();            String sql;            sql = "select * from SC;";            ResultSet rs = stmt.executeQuery(sql);            // 展开结果集数据库            while(rs.next()){                // 通过字段检索                String sno = rs.getString("sno");                String cno = rs.getString("cno");                int grade = rs.getInt("grade");                // 输出数据                System.out.print("sno: " + sno);                System.out.print("cno: " + cno);                System.out.print("grade: " + grade);                System.out.print("\n");            }            // 完成后关闭            rs.close();            stmt.close();            conn.close();            System.out.println("Connection succeed!");        }        catch(Exception e)        {            e.printStackTrace();            return null;        }        return conn;    }    public static void main(String[] args) {        // TODO 自动生成的方法存根        new connectsql();        connectsql.getConnect("shiyanjiu","openGauss@123");    }}

运行:

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部