jdbc实现事物管理并搬表
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文实现旧库中的数据搬到新库中1、获取jdbc连接package com.transferdata;import java.sql.DriverManager;import java.sql.SQLE
千家信息网最后更新 2026年10月31日jdbc实现事物管理并搬表
本文实现旧库中的数据搬到新库中
1、获取jdbc连接
package com.transferdata;import java.sql.DriverManager;import java.sql.SQLException;import com.mysql.jdbc.Connection;public class ConnectionUtils { public Connection getOldConn() { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/old?useUnicode=true&characterEncoding=utf-8"; String username = "root"; String password = "123456"; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public Connection getNewConn() { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/new?useUnicode=true&characterEncoding=utf-8"; String username = "root"; String password = "123456"; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public void closeConnection(Connection conn){ // 判断conn是否为空 if(conn != null){ try { conn.close(); // 关闭数据库连接 } catch (SQLException e) { e.printStackTrace(); } } }}2、获取老的数据
package com.transferdata;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import com.entity.Customer;public class GetOldData { private Connection oldConn; public GetOldData(Connection oldConn){ this.oldConn = oldConn; } public List getCustomerList() { List customerList = new ArrayList(); String sql = "select * from customer"; PreparedStatement pstmt; try { pstmt = (PreparedStatement)oldConn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Customer customer = new Customer(); customer.setId(rs.getString("id")); customer.setEmail(rs.getString("email")); customer.setIdcardNo(rs.getString("idcard_no")); customer.setLoginName(rs.getString("login_name")); customer.setMobileNo(rs.getString("mobile_no")); customer.setPassword(rs.getString("password")); customer.setRealName(rs.getString("real_name")); customer.setRecomerMoNo(rs.getString("recomer_mo_no")); customerList.add(customer); } } catch (SQLException e) { e.printStackTrace(); } return customerList; } } 3、实体类
package com.entity;public class Customer { private String id; private String loginName; private String mobileNo; private String recomerMoNo; private String realName; private String email; private String idcardNo; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getMobileNo() { return mobileNo; } public void setMobileNo(String mobileNo) { this.mobileNo = mobileNo; } public String getRecomerMoNo() { return recomerMoNo; } public void setRecomerMoNo(String recomerMoNo) { this.recomerMoNo = recomerMoNo; } public String getRealName() { return realName; } public void setRealName(String realName) { this.realName = realName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getIdcardNo() { return idcardNo; } public void setIdcardNo(String idcardNo) { this.idcardNo = idcardNo; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }4、插入新库
用throws Exception,而不用try/catch,目的是将异常全部抛到外层
如果用try/catch ,外层将不能捕获异常,不会执行回滚操作,这点注意
package com.transferdata;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Date;import java.util.List;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import com.entity.Customer;public class InsertNewSchame { private Connection newConn; public InsertNewSchame(Connection newConn){ this.newConn = newConn; } /* * 用throws Exception,而不用try/catch,目的是将异常全部抛到外层 */ public boolean insertCustomer(Customer customer, String id) throws Exception{ // account_id\mobile_app_info\zhima_score\device_token String sqlInsert = "INSERT INTO adm_sys_customer(email,idcard_no,login_name,mobile_no,password,real_name) " + "VALUES (?,?,?,?,?,?)"; PreparedStatement pstmt; pstmt = (PreparedStatement) newConn.prepareStatement(sqlInsert); pstmt.setString(1, customer.getEmail()); pstmt.setString(2, customer.getIdcardNo()); pstmt.setString(3, customer.getLoginName()); pstmt.setString(4, customer.getMobileNo()); pstmt.setString(5, customer.getPassword()); pstmt.setString(6, customer.getRealName()); pstmt.executeUpdate(); pstmt.close(); return true; } }5、测试
外层捕获异常后执行回滚操作
package com.zkbc.transferdata;import java.sql.SQLException;import java.util.List;import com.mysql.jdbc.Connection;import com..entity.Customer;public class Testtest { /* * 外层捕获异常后执行回滚操作 */ public static void main(String args[]) { ConnectionUtils ConnectionUtils = new ConnectionUtils(); Connection oldConn = ConnectionUtils.getOldConn(); Connection newConn = ConnectionUtils.getNewConn(); GetOldData oldData = new GetOldData(oldConn); InsertNewSchame newData = new InsertNewSchame(newConn); try{ oldConn.setAutoCommit(false); newConn.setAutoCommit(false); String cuId = "0"; List customerList = oldData.getCustomerList(); for(Customer customer:customerList) { cuId = (Integer.parseInt(cuId) + 1) + ""; //customer表和credit表 newData.insertCustomer(customer, cuId); } oldConn.commit(); newConn.commit(); }catch(Exception e) { e.printStackTrace(); try { oldConn.rollback(); newConn.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }finally { try { oldConn.setAutoCommit(true); newConn.setAutoCommit(true); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } ConnectionUtils.closeConnection(oldConn); ConnectionUtils.closeConnection(newConn); } }}
外层
数据
不用
目的
驱动
实体
数据库
测试
事物
管理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
云之行互联网科技
新华互联网科技学校
碳银互联网科技
火传媒上海互联网科技
互联网之后的科技是什么
欧洲十大科技互联网公司
汽车互联网创新科技园
互联网经济与金融科技
上海宁丞科技互联网
坤平互联网科技
乌鲁木齐新华智原互联网科技学校
国大互联网教育科技有限公司薪资
信承诺互联网科技有限公司
珠海东科互联网科技有限公司
世界互联网科技成果奖
兰石爱特工业互联网科技分公司
银川新华互联网科技学校原画
互联网科技和医药行业
广西泛欧互联网科技有限公司
朗新科技与工业互联网
有马互联网科技
长亮科技互联网金融
中国最先进互联网科技公司
互联网之后的科技是什么
辽宁互联网新科技
注册互联网科技公司经营范围大全
中国科技创新与世界互联网大会
工业互联网展湾科技股份有限公司
宁波跨境商互联网科技有限公司