GaussDB クラウド データベースへの JDBC 接続の例

目次

1. 実験環境

2. HUAWEI CLOUDにログインしてテストライブラリテーブルを作成します

1. GaussDB クラウド データベースにログインします。

2. テスト用のデータベースとテーブルを構築する

3. ログインとアクセスのテスト用に共通の役割 (ユーザー) を追加します (オプション)

4. 対応するパブリックネットワークIPを取得します。

3. Javaプロジェクトの作成

1. Javaプロジェクトを作成する

2.jarパッケージを追加する

3. Javaコードを編集する

4. テストを実行して結果を表示する

 

1. 実験環境

1. ローカル JDB バージョン: この実験バージョン: JDK バージョン: Java 11.0.17

(ログイン URL: Java Downloads | Oracle   、ダウンロードしてインストールする対応する JDK バージョンを選択します)

2. ファーウェイのクラウド環境:広州に優しいユーザー環境、弾力性のあるパブリックネットワーク

2. HUAWEI CLOUDにログインしてテストライブラリテーブルを作成します

1. GaussDB クラウド データベースにログインします。

IAM ユーザーとしてログインします。

 

 以下に示すように、「サービス リスト -データ管理サービス DAS -開発ツール - ログイン対応するインスタンス」を順に入力します。

 

 

「接続のテスト」をクリックすると、接続が成功したことを示すプロンプトが表示されます。「OK」をクリックして次のように入力します。

 

2.テスト用のデータベースとテーブルを構築する

java_test ライブラリを作成します。

 

 customer_t1 テーブルを作成します。

CREATE TABLE customer_t1(

       c_customer_id INTEGER

     、c_customer_name VARCHAR(32)

);

 

 

3.ログインとアクセスのテスト用に共通の役割 (ユーザー) を追加します (オプション)

共通ロール test_role を追加しました。これはデフォルトでログイン許可を購入する (接続を許可する)

 

テーブル customer_t1 をクエリするための test_role 権限を付与します。

public.customer_t1 TO test_role に対する GRANT SELECT;

 

 

 (ヒント: テストするときは、Java スクリプト内の接続ユーザー名とシークレットを作成時に設定したものに置き換えます)

4.対応するパブリックネットワークIPを取得します。

GaussDB クラウド データベースへのローカル接続用のパブリック IP を取得します。

 

 

 IP がローカルで ping されているかどうかをテストします (win+r - cmd - ping ip):

 

 

3. 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 クラウド データベースに接続し、挿入、更新、選択を実行します。

パッケージgaussdb_jdbc;

 

java.sql.Connectionをインポートします

インポートjava.sql.DriverManager;

インポートjava.sql.ResultSet;

インポートjava.sql.SQLException;

java.sql.Statementをインポートします

 

パブリック クラスGaussDB_jdbc {

 

    静的 最終文字列JDBC_DRIVER = "org.postgresql.Driver"

    静的 最終文字列DB_URL = "jdbc:postgresql://*.*.*.*:8000/java_test" ;

                                 

    //データベースのユーザー名とパスワードは独自のものに従って設定する必要があります

    静的 最終文字列USER = "****" ;

    静的 最終文字列PASS = "****" ;

   

    //挿入を実行する

    public static void InsertData(Connection conn ){

        ステートメントstmt = null ;

           {を試してください

              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小点进行测试。 本次实验到此结束,欢迎大家互动、交流!

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/gaussdb/blog/8816317