1. 程式人生 > 其它 >資料庫實驗九--OpenGauss(使用JDBC連線資料庫)

資料庫實驗九--OpenGauss(使用JDBC連線資料庫)

實驗要求

瞭解如何使用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");

    }

}

執行: