zoukankan      html  css  js  c++  java
  • 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)+"	");
                System.out.print(resultSet.getString(2)+"	");
                System.out.print(resultSet.getString(3)+"	");
                System.out.print(resultSet.getString(4)+"	");
                System.out.println(resultSet.getString(5)+"	");
            }
        } 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())); 

  • 相关阅读:
    http://www.cplusplus.com/reference/string/string/find_last_of/

    SQL Server数据库设计表和字段的经验
    AMP产品识别
    水晶头AMP识别
    双绞线的规范和制作经验谈
    VB.net 产生随机验证码
    手把手教您架设Windows2003共享服务器
    使用EasyRecovery Pro 6.04恢复RAW格式硬盘的数据实战
    .NET中各种数据库连接大全
  • 原文地址:https://www.cnblogs.com/chenglc/p/6923078.html
Copyright © 2011-2022 走看看