首页 > 代码库 > JDBC+XML+DOM4J

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())); 

 

JDBC+XML+DOM4J