本文實(shí)現(xiàn)舊庫(kù)中的數(shù)據(jù)搬到新庫(kù)中

成都創(chuàng)新互聯(lián),專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷型網(wǎng)站制作、自適應(yīng)網(wǎng)站建設(shè)、展示型成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷推廣問(wèn)題。
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,加載對(duì)應(yīng)驅(qū)動(dòng)
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,加載對(duì)應(yīng)驅(qū)動(dòng)
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(); // 關(guān)閉數(shù)據(jù)庫(kù)連接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}2、獲取老的數(shù)據(jù)
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<Customer> getCustomerList() {
List<Customer> customerList = new ArrayList<Customer>();
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、實(shí)體類
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、插入新庫(kù)
用throws Exception,而不用try/catch,目的是將異常全部拋到外層
如果用try/catch ,外層將不能捕獲異常,不會(huì)執(zhí)行回滾操作,這點(diǎn)注意
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、測(cè)試
外層捕獲異常后執(zhí)行回滾操作
package com.zkbc.transferdata;
import java.sql.SQLException;
import java.util.List;
import com.mysql.jdbc.Connection;
import com..entity.Customer;
public class Testtest {
/*
* 外層捕獲異常后執(zhí)行回滾操作
*/
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<Customer> 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);
}
}
}
文章標(biāo)題:jdbc實(shí)現(xiàn)事物管理并搬表
當(dāng)前URL:http://www.yijiale78.com/article0/pehgio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)頁(yè)設(shè)計(jì)公司、定制開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)