在测试数据库性能时,需要使用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
网友评论