openGauss##使用JDBC连接数据库配置

2020-12-28  本文已影响0人  upup果

在测试数据库性能时,需要使用jdbc连接openGauss(本地)数据库,简单记录一下配置过程.我安装的centos是minimal版本,不支持安装ide,所有就是简单的用命令行编译运行.
1.首先去openGauss官网下载好jdbc驱动,然后在本地安装好jdk.
2.登录openGauus,创建新用户(如果已经有则忽略这一步),远程登录不允许使用omm用户.

CREATE USER jack PASSWORD 'Test@123';  

3.如果使用内存表,则需要授予新用户权限:

grant usage on foreign server mot_server to jack;

5.配置客户端接入认证,运行远程连接(这步要退出openGauss,在命令行执行)

gs_guc set -N all -I all -h "host all jack 你的ip/32 sha256"

4.编写测试程序(修改ip,端口,用户,密码)

//DBtest.java
//演示基于JDBC开发的主要步骤,会涉及创建数据库、创建表、插入数据等。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.CallableStatement;

public class DBTest {

  //创建数据库连接。
  public static Connection GetConnection(String username, String passwd) {
  String driver = "org.postgresql.Driver";
  String sourceURL = "jdbc:postgresql://ip:端口/postgres";
  Connection conn = null;
  try {
      //加载数据库驱动。
      Class.forName(driver).newInstance();
  } 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;
};

//执行普通SQL语句,创建customer_t1表。
public static void CreateTable(Connection conn) {
  Statement stmt = null;
  try {
    stmt = conn.createStatement();

    //执行普通SQL语句。
    int rc = stmt
        .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");

  stmt.close();
} catch (SQLException e) {
  if (stmt != null) {
    try {
      stmt.close();
    } catch (SQLException e1) {
      e1.printStackTrace();
    }
  }
  e.printStackTrace();
}
}

//执行预处理语句,批量插入数据。
public static void BatchInsertData(Connection conn) {
PreparedStatement pst = null;

try {
  //生成预处理语句。
  pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)");
  for (int i = 0; i < 3; i++) {
    //添加参数。
    pst.setInt(1, i);
    pst.setString(2, "data " + i);
    pst.addBatch();
  }
  //执行批处理。
  pst.executeBatch();
  pst.close();
} catch (SQLException e) {
  if (pst != null) {
    try {
      pst.close();
    } catch (SQLException e1) {
    e1.printStackTrace();
    }
  }
  e.printStackTrace();
}
}

//执行预编译语句,更新数据。
public static void ExecPreparedSQL(Connection conn) {
PreparedStatement pstmt = null;
try {
  pstmt = conn
      .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1");
  pstmt.setString(1, "new Data");
  int rowcount = pstmt.executeUpdate();
  pstmt.close();
} catch (SQLException e) {
  if (pstmt != null) {
    try {
      pstmt.close();
    } catch (SQLException e1) {
      e1.printStackTrace();
    }
  }
  e.printStackTrace();
}
}


/**
 * 主程序,逐步调用各静态方法。
 * @param args
*/
public static void main(String[] args) {
  //创建数据库连接。
Connection conn = GetConnection("tester", "Password1234");

//创建表。
CreateTable(conn);

//批插数据。
BatchInsertData(conn);

//执行预编译语句,更新数据。
ExecPreparedSQL(conn);

//关闭数据库连接。
try {
  conn.close();
} catch (SQLException e) {
  e.printStackTrace();
 }
}
}

5.命令行编译,将jdbc驱动的jar包和DBTest.java放在同一个目录下,编译:

javac -cp postgresql.jar DBTest.java

6.运行

java -cp .:postgresql.jar DBTest
上一篇下一篇

猜你喜欢

热点阅读