Oracle 批量添加数据到数据库(本案例使用Statement执行批量插入)
示例代码:
package com.hcq.main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
public class Main4 {
/** 数据库的属性信息 */
// 数据库的主机 IP地址
private static String IP = "127.0.0.1";
// 数据库端口号
private static String PORT = "1521";
// 数据库名
private static String DB_NAME = "test";
// 数据库 URL
private static String URL = "jdbc:oracle:thin:@" + IP + ":" + PORT + ":" + DB_NAME;
// 数据库连接用户名
private static String USER = "scott";
// 用户密码
private static String PSW = "tiger";
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
try {
/** 第一步:加载驱动 ;加载驱动有三种方式 */
// 方式一
// DriverManager.registerDriver(new OracleDriver());
// 方式二
Class.forName("oracle.jdbc.OracleDriver");// 新版本写法,9i之后新版本推荐
// Class.forName("oracle.jdbc.driver.OracleDriver");// 兼容9i之前的版本。
// 方式三:自动加载
/** 第二步:建立连接 */
// 获取连接
conn = DriverManager.getConnection(URL, USER, PSW);
/** 第三步:连接成功后,获取Statement对象, 得到一个可以执行sql语句的声明 */
st = conn.createStatement();
// 关闭自动提交
conn.setAutoCommit(false);
// 编写sql语句(本案例使用的数据表为Oracle自带的数据表)
for (int i = 1; i <= 500; i++) {
String sql = "INSERT INTO myemp(empno,ename,sal,deptno) VALUES(" + i + ",'姓名" + i + "'," + 1000.0 + ","
+ 30 + ")";
st.addBatch(sql);// 批量添加语句
}
// 执行多条sql语句(返回的是每一条语句执行后的响应行数)
int[] executeBatch = st.executeBatch();
// 观察输出内容
System.out.println("返回结果:" + Arrays.toString(executeBatch));
// 手动提交
conn.commit();
// 还原自动提交
conn.setAutoCommit(true);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// 遇到异常就回滚,回滚到执行之前的状态,执行的语句要么全部成功,要么失败
e.printStackTrace();
if (conn != null) {
try {
conn.rollback();// 回滚
conn.setAutoCommit(true);// 还原自动提交
} catch (SQLException e1) {
e1.printStackTrace();
}
}
} finally {
if (st != null) {
try {
/** 第四步:sql语句执行完应该释放 Statement 资源 */
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
/** 第五步:释放连接资源 */
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
效果截图: