JDBC+XML+DOM4J

利用xml文件封装数据库配置信息
xml文件放在src目录下
/testjdbc1/src/DBUtil.xml

<?xml version="1.0" encoding="GBK" ?>
<sxtConfig>
<!-- 本次 连接  mysql 数据库-->
    <database-type>mysql</database-type>
    <database type="oracle">
        <className>oracle.jdbc.driver.OracleDriver</className>
        <url>jdbc:oracle:thin:@localhost:1521:orcl</url>
        <user>scott</user>
        <pwd>tiger</pwd>
    </database>
    <database type="mysql">
        <className>com.mysql.jdbc.Driver</className>
        <url>jdbc:mysql://localhost:3306/test</url>
        <user>root</user>
        <pwd>clc</pwd>
    </database>
</sxtConfig>

java文件解析xml文件,封装方法 
/testjdbc1/src/dbutil/JDBCUtil.java

package dbutil;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class JDBCUtil {
    public static String className;
    public static String url ;
    public static String user;
    public static String pwd ;
    /**
     * DOM4j解析xml
     */
    static {
        try {
            // 开始解析配置文件
            SAXReader saxReader = new SAXReader();
            // 以流的方式读取配置文件
            InputStream inputStream = JDBUtil.class.getClassLoader().getResourceAsStream("DBUtil.xml");
            // 开始配置文件
            Document document = saxReader.read(inputStream);
            // 获取根节点
            Element rootElement = document.getRootElement();
            // 获取要选择的数据库类型
            String databaseType = rootElement.elementText("database-type");
            // 判断数据库类型是否为空
            if (databaseType != null) {
                // 遍历出数据库的配置信息
                List<Element> elements = rootElement.elements("database");
                for (Element element : elements) {
                    // 判断数据库是否一致
                    if (databaseType.equals(element.attributeValue("type"))) {
                        // 获取当前元素的所有子元素
                        className = element.elementText("className");
                        url = element.elementText("url");
                        user = element.elementText("user");
                        pwd = element.elementText("pwd");
                    }
                }
                // 使用静态代码块加载驱动
                Class.forName(className);
            } else {
                System.out.println("您的配置文件数据库类型【database-type】有误,请重新配置");
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 创建JDBC连接 connection的连接和事务的提交方式
     */
    public static Connection createConnection() {
        return createConnection(true);
    }
    // 事务的提交
    private static Connection createConnection(boolean autoCommit) {
        // 声明连接
        Connection connection = null;
        try {
            // 获取连接
            connection = DriverManager.getConnection(url, user, pwd);
            // 事务的提交方式
            connection.setAutoCommit(autoCommit);
            System.out.println("数据库连接成功");
        } catch (SQLException e) {
            System.out.println("您的数据库详细配置有误url【" + url + "】user【" + user + "】pwd【" + pwd + "】");
            e.printStackTrace();
        }
        return connection;
    }
    /**
     * 获取发送器 statement
     */
    public static Statement createStatemen(Connection connection) {
        Statement statement = null;
        try {
            statement = connection.createStatement();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return statement;
    }
    /**
     * 获取预处理发送器
     */
    public static PreparedStatement createPreparedStatement(Connection connection, CharSequence sql) {
        PreparedStatement preparedStatement = null;
        try {
            preparedStatement = connection.prepareStatement(sql.toString());
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return preparedStatement;
    }
    /**
     * 关闭连接connection
     */
    private static void closeConnection(Connection connection) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    /**
     * 关闭发送器statement
     */
    private static void closeStatement(Statement statement) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    /**
     * 关闭连接resultSet
     */
    private static void closeResultSet(ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    /**
     * 关闭所有连接 connection statement resultSet
     */
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
        closeResultSet(resultSet);
        closeStatement(statement);
        closeConnection(connection);
    }
}

测试连接

package testoracle;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import dbutil.JDBUtil;
public class TestDBUtil {
public static void main(String[] args) {
    //声明连接
    Connection connection=null;
    Statement statement=null;
    ResultSet resultSet=null;
    //sql
    String sql="SELECT * FROM EMP";
    try {
    //获取连接
    connection=JDBUtil.createConnection();
    //获取发送器
    statement=JDBUtil.createStatement(connection);
    //发送sql语句
        resultSet=statement.executeQuery(sql);
        while (resultSet.next()) {
            System.out.print(resultSet.getString(1)+"\t");
            System.out.print(resultSet.getString(2)+"\t");
            System.out.print(resultSet.getString(3)+"\t");
            System.out.print(resultSet.getString(4)+"\t");
            System.out.println(resultSet.getString(5)+"\t");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        //关闭连接
        JDBUtil.closeAll(statement, connection, resultSet);
    }

}
}

数据库中插入日期类型的数据的方式:
preparedStatement.setTimestamp(2, new java.sql.Timestamp(user.getUpdateTime().getTime()));

时间: 2024-10-06 05:36:34

JDBC+XML+DOM4J的相关文章

JavaEE XML DOM4J解析

DOM4J解析 @author ixenos DOM4J常用API SAXReader reader = new SAXReader(); //Document对象也看成根节点 Document doc = reader.read(File file); //迭代当前节点下的子节点/也可foreach Iterator itr = doc.nodeIterator(); While(itr.hasNext()){ Node node = itr.next(); } //得到根节点 Element

[DataSource] Properties 以及 DataSource 各个选项的含义:Data Connection,Directory,Excel,File,Grid,Groovy,JDBC,XML

http://www.soapui.org/about-soapui-pro/working-with-soapui-pro.html DataSource type dropdown – lets you pick which external source you would use to pull into your test case. Excel – Point to an Excel (xls) file JDBC – Connect to a database and pull d

xml+dom4j+xpath学生管理系统

<?xml version="1.0" encoding="UTF-8"?> <student> <stu> <name>张三</name> <age>16</age> <sex>男</sex> </stu> <stu> <name>李四</name> <age>18</age> <

XML Dom4j和Pull 官网中简单介绍

  Dom4j Parsing XML One of the first things you'll probably want to do is to parse an XML document of some kind. This is easy to do in <dom4j>. The following code demonstrates how to this. 解析: 首先你可能会想要去解析各种XML文件,在dom4j中这是很容易的.以下代码演示了这么解析. import jav

dom4j创建xml文件

import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; /** * 使用dom4j生成xml文档 * @author Administrator * */ publi

xml(3)--dom4j实现crud操作

1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方式. sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它. (2)XML解析器(软件/实现类) Crimson(SUN).Xerces(IBM->APACHE) .Aelfred2(DOM4J开源组织) (3)XML解析技术

XML编程总结(四)——使用dom4j方式操作xml

(四)使用dom4j方式操作xml dom4j是解析XML的一种开源API,是jdom的升级品,用来读写XML文档.它具有性能优异.功能强大和极易使用的特点,它的性能超过sun公司官方的dom技术.dom4j对Xpath有良好的支持(使用xpath时需要导入jaxen的jar包),dom4j最大的特色使用大量的接口.使用dom4j时需要导入dom4j-xxx.jar包. Attribute ——Attribute定义了XML的属性 Branch ——Branch为能够包含子节点的节点如XML元素

使用dom4j 解析xml

web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-a

XML解析-- DOM , SAX, JDOM ,JAXB, DOM4j

DOM:DocumentBuilderFactory |-- w3c提供,将xml文件全部读入内存,组成数据树,以便快速访问节点. |-- 消耗系统内存,不适合文件较大xml SAX: |-- 基于事件的处理方法,在标签开始和结束以及错误等地方调用相应的接口实现方法. |-- 具有优异的性能和存储空间小 |-- 使用不方便 JDOM: |-- 类似DOM,使用SAX实现,性能较好 JAXB: |-- Sun,将schema或者(DTD)映射成java Object |-- 有固定的schema,