在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了。在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的DbUtil如下:
package DbUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.sqlException; import java.sql.Statement; /** * 封装数据库常用操作 * @author changshou * */ public class DbUtil { //取得数据库连接 public static Connection getConnection(){ Connection conn = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; String username = "drp1"; String password = "drp1"; conn = DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (sqlException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } //关闭连接 public static void close(Connection conn){ if(conn != null){ try { conn.close(); } catch (sqlException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //关闭PreparedStatement和Statement public static void close(PreparedStatement pstmt){ if(pstmt != null){ try { pstmt.close(); } catch (sqlException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //关闭Statement public static void close(Statement stmt){ if(stmt != null){ try { stmt.close(); } catch (sqlException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //关闭ResultSet public static void close(ResultSet rs){ if(rs != null){ try { rs.close(); } catch (sqlException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 手动开启事务,不让事务自动提交 * @param conn */ public static void beginTransaction(Connection conn){ try{ if(conn != null){ if(conn.getAutoCommit()){ conn.setAutoCommit(false);//手动提交 } } }catch(sqlException e){ } } /** * 提交事务 * @param conn */ public static void commitTransaction(Connection conn){ try{ if(conn != null){ if(!conn.getAutoCommit()){ conn.commit(); } } }catch(sqlException e){ } } /** * 回滚事务 * @param conn */ public static void rollbackTransaction(Connection conn){ try{ if(conn != null){ if(!conn.getAutoCommit()){ conn.rollback(); } } }catch(sqlException e){ } } public static void reset(Connection conn){ try{ if(conn != null){ if(conn.getAutoCommit()){ conn.setAutoCommit(false); }else{ conn.setAutoCommit(true); } } }catch(sqlException e){ } } }
下面的代码将真正执行数据的插入操作,注意在执行代码前需引入相关jar包,如jdbc驱动等。否则在执行的过程中会报错。
package UserManager; import java.sql.Connection; import java.sql.PreparedStatement; import com.sun.org.apache.bcel.internal.generic.RETURN; import DbUtil.*; public class UserManager { public void insertUser(String userId,String userName,String userRoot){ //执行插入的sql语句 String sql = "INSERT INTO T_TEST1 (USERUD,USERNAME,USERROOT) VALUES (?,?,?)"; Connection conn = null; PreparedStatement pstmt = null; try{ //得到数据库连接 conn = DbUtil.getConnection(); pstmt = conn.prepareStatement(sql); //给占位符赋值 pstmt.setString(1,userId); pstmt.setString(2,userName); pstmt.setString(3,userRoot); //执行插入语句 pstmt.executeUpdate(); }catch(Exception e){ e.printStackTrace(); }finally{ //关闭相关资源 DbUtil.close(pstmt); DbUtil.close(conn); } } }
总结:将xml文件中的数据插入到数据库中所涉及到的环节主要有四个。第一是前端xml文件的解析。第二是xml数据的传输。第三是数据的重新组合。第四是数据的插入。贯穿这四个环节所涉及的语言分别是xml,javascript,html,java。从当今编程的趋势看,混合语言的使用已经是一种趋势,而解决类似问题的关键就在于将整个过程分成若干块,将每一块提供一个接口,只要接口的实现没有问题,整个过程也不会有太大问题。
Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库。
Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
Ajax
原文链接:https://www.f2er.com/ajax/166137.html