在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了。在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个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

最新文章

  1. Android学习杂记
  2. C++ 多态、虚函数机制以及虚函数表
  3. <context:component-scan>使用说明
  4. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
  5. iOS 推荐一个下载用的第三方库
  6. [Sciter系列] MFC下的Sciter–2.Sciter中的事件,tiscript,语法
  7. codeforces 675C Money Transfers map
  8. Hadoop-MapReduce之自定义数据类型
  9. MySQL常用命令大全(转)
  10. MySQL query_cache_type 详解
  11. python中eval, exec, execfile,和compile [转载]
  12. Web网页中内嵌Activex的Activex插件开发 .
  13. 转:条件变量、pthread_cond_init
  14. 学习笔记——Java数字处理类
  15. jQuery选择器的的优点
  16. 关闭eclipse自动弹出console的功能
  17. less 命令翻页键
  18. 主要的Ajax框架都有什么?
  19. 关于思科C2950交换机清除密码,恢复初始配置的方法
  20. git提交出现这个界面怎么退出

热门文章

  1. Linq to Sql : 动态构造Expression进行动态查询
  2. each与list的用法
  3. 关于session_start()这个问题
  4. 从实例谈OOP、工厂模式和重构
  5. 在windows server2003下安装Redmine
  6. js实现文字横向滚动
  7. postal邮件发送(二):Email headers,附件,图片介绍
  8. Redmine(Ruby)配置经验
  9. php中使用随机数
  10. PBKDF2WithHmacSHA1算法