idea64通过jdbc连接到kingbase数据库
提前在数据库创建好表:
c
CREATE TABLE test_table (
id INTEGER,
name VARCHAR(50),
age INTEGER,
email VARCHAR(100),
phone VARCHAR(20),
address VARCHAR(200),
create_time TIMESTAMP,
salary NUMERIC(10,2),
is_active BOOLEAN,
remark TEXT
);
第一步:新建project项目

第二步:右键project然后点open Moudle Setting添加驱动

第三步:创建java类

内容如下:
c
import java.sql.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Random;
public class BatchInsertDemo {
// 数据库连接参数(请根据你的实际情况修改)
private static final String URL = "jdbc:kingbase8://192.168.40.110:54321/db01?optimizeBatchedDML=true"; // 地址:端口/数据库名
private static final String USER = "system"; // 数据库用户名
private static final String PASSWORD = "123456"; // 数据库密码
// 批量插入的 SQL 语句(使用占位符)
private static final String INSERT_SQL = "INSERT INTO test_table (id, name, age, email, phone, address, create_time, salary, is_active, remark) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
public static void main(String[] args) {
// 记录开始时间
long startTime = System.currentTimeMillis();
// 1. 加载驱动(JDBC 4.0 以上可以自动加载,但为了保险,手动加载也可以)
try {
Class.forName("com.kingbase8.Driver");
} catch (ClassNotFoundException e) {
System.err.println("未找到 Kingbase JDBC 驱动,请检查 JAR 是否已添加!");
e.printStackTrace();
return;
}
// 2. 建立数据库连接
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {
// 关闭自动提交,以便手动控制事务
conn.setAutoCommit(false);
// 3. 创建 PreparedStatement 对象
try (PreparedStatement pstmt = conn.prepareStatement(INSERT_SQL)) {
Random random = new Random();
int batchSize = 1000; // 每 1000 条执行一次批量提交,防止内存溢出
int totalCount = 100000; // 总共插入 10 万条
for (int i = 1; i <= totalCount; i++) {
// 为占位符设置值(每个字段都生成随机或递增的数据)
pstmt.setInt(1, i); // id 从 1 开始递增
pstmt.setString(2, "用户" + i); // name
pstmt.setInt(3, 20 + random.nextInt(40)); // age 20~59 随机
pstmt.setString(4, "user" + i + "@example.com"); // email
pstmt.setString(5, "138" + String.format("%08d", random.nextInt(100000000))); // phone
pstmt.setString(6, "地址" + random.nextInt(1000)); // address
pstmt.setTimestamp(7, Timestamp.valueOf(LocalDateTime.now())); // create_time
pstmt.setBigDecimal(8, new java.math.BigDecimal(random.nextInt(10000) + 3000)); // salary 3000~12999
pstmt.setBoolean(9, random.nextBoolean()); // is_active
pstmt.setString(10, "备注信息" + i); // remark
// 将当前参数添加到批处理中
pstmt.addBatch();
// 达到 batchSize 时执行批处理并清空批处理
if (i % batchSize == 0) {
pstmt.executeBatch(); // 执行批处理
conn.commit(); // 提交事务
System.out.println("已插入 " + i + " 条数据");
}
}
// 处理剩余不足 batchSize 的批次
pstmt.executeBatch();
conn.commit();
long endTime = System.currentTimeMillis();
System.out.println("批量插入完成!总耗时:" + (endTime - startTime) / 1000.0 + " 秒");
} catch (SQLException e) {
// 发生异常时回滚
conn.rollback();
System.err.println("插入数据时发生错误,已回滚!");
e.printStackTrace();
}
} catch (SQLException e) {
System.err.println("数据库连接失败!");
e.printStackTrace();
}
}
}
pom.xml如下:
c
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>project-durid</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- Spring JDBC 基础,如果使用Spring Boot,这个通常已包含 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- KingbaseES 驱动 -->
<dependency>
<groupId>com.kingbase8</groupId>
<artifactId>kingbase8</artifactId>
<version>8.6.0</version> <!-- 请根据你的数据库版本选择合适的版本 -->
</dependency>
</dependencies>
</project>
第四步运行:java类

运行即可

-----------注
当然也可以直接通过idea64工具连接数据库
右键点击database,添加驱动

然后连接数据库

填写连接信息

连接成功:

查询
