zoukankan      html  css  js  c++  java
  • jdbc的优化

    jdbc的优化
    把经常用的属性,代码全部封装起来,不用每次用的时候都创建,比如 下面这些动作不需要重复创建,只需封装起来即可提高的效率
    把属性也封装起来当作配置信息,用时读取配置文件文件即可
    package com.bjsxt.util;

    /**
    * 存储着所有的常量信息
    *
    * @author Administrator
    *
    */
    public class SxtConstants {
    //数据库的配置信息
    public static final String DATABASE_CLASSNAME = "oracle.jdbc.driver.OracleDriver";
    public static final String DATABASE_URL = "jdbc:oracle:thin:@192.168.1.253:1521:orcl";
    public static final String DATABASE_USER = "scott";
    public static final String DATABASE_PASSWORD = "tiger";
    }


    //获取连接
    Connection connection = SxtDBUtil.createConnection();
    //获取发送器
    Statement statement = SxtDBUtil.createStatment(connection);
    //发送SQL语句,获取结果集合
    ResultSet resultSet = statement.executeQuery(sql);
    //遍历结果集合


    完整代码

    package com.bjsxt.util;

    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.Element;
    import org.dom4j.io.SAXReader;

    /**
    *
    * 配置文件必须放在src根目录
    *
    * @author Administrator
    *
    */
    public final class SxtDBUtil {

    //数据库的配置信息
    private static String className = "";
    private static String url = "";
    private static String user = "";
    private static String password = "";

    static {
    try {
    //开始解析配置文件
    SAXReader saxReader = new SAXReader();
    //以流的方式获取获取配置文件
    InputStream inputStream = SxtDBUtil.class.getClassLoader().getResourceAsStream("SxtDBUtil.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");
    password = element.elementText("password");
    }
    }
    //使用静态代码块加载驱动
    Class.forName(className);
    } else {
    System.err.println("您的配置文件数据库类型【database-type】有误,请重新配置");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 创建JDBC连接
    * @return
    */
    public static Connection createConnection() {
    return createConnection(true);
    }

    /**
    * 事务手动提交还是自动提交
    * @param isAutoCommit
    * @return
    */
    public static Connection createConnection(boolean autoCommit) {
    //声明连接
    Connection connection = null;
    try {
    //获取连接
    connection = DriverManager.getConnection(url, user, password);
    //手动或者自动提交事务
    connection.setAutoCommit(autoCommit);
    } catch (SQLException e) {
    System.err.println("您的数据库详细配置有误url【" + url + "】user【" + user + "】password【" + password + "】");
    e.printStackTrace();
    }
    //返回连接
    return connection;
    }

    /**
    * 获取发送器
    * @param connection
    * @return
    */
    public static Statement createStatment(Connection connection) {
    Statement statement = null;
    try {
    statement = connection.createStatement();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return statement;
    }

    /**
    * 获取预处理发送器
    * @param connection
    * @param sql
    * @return
    */
    public static PreparedStatement createPreparedStatement(Connection connection, CharSequence sql) {
    PreparedStatement preparedStatement = null;
    try {
    preparedStatement = connection.prepareStatement(sql.toString());
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return preparedStatement;
    }

    /**
    * 关闭连接
    * @param connection
    */
    private static void closeConnection(Connection connection) {
    if (connection != null) {
    try {
    connection.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    /**
    * 关闭发送器
    * @param statement
    */
    private static void closeStatement(Statement statement) {
    if (statement != null) {
    try {
    statement.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    /**
    * 关闭结果集
    * @param resultSet
    */
    private static void closeResultSet(ResultSet resultSet) {
    if (resultSet != null) {
    try {
    resultSet.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    /**
    * 关闭所有的连接
    * @param connection
    * @param statement
    * @param resultSet
    */
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
    closeResultSet(resultSet);
    closeStatement(statement);
    closeConnection(connection);
    }
    }

  • 相关阅读:
    Python-08-内置函数
    Python-07-高阶函数
    Python-06-函数
    Python-05-字符串格式化
    Python-04-数据结构
    Python-03-流程控制
    yum-config-manager命令找不到的解决方法
    Centos7 yum 出现could not retrieve mirrorlist 最终解决方案
    后台皮肤保存
    基于Docker的Mysql主从复制搭建
  • 原文地址:https://www.cnblogs.com/lgf428/p/5831537.html
Copyright © 2011-2022 走看看