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

优质内容筛选与推荐>>
1、适配器模式
2、JavaScript技巧大全
3、【蓝桥杯】第六届国赛C语言B组 1.积分之迷(水题)
4、Oracle Job
5、如何打造个人品牌?


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn