查看: 542|回复: 0

关于news项目的BaseDao代码的疑问

[复制链接]
  • TA的每日心情
    开心
    前天 08:44
  • 签到天数: 770 天

    [LV.10]以坛为家III

    发表于 2017-12-2 10:42:29 | 显示全部楼层 |阅读模式
    下面的代码中的增删改查的方法获取连接的时候直接调用了getConnection()方法,并没有进行判断,如果getConnection()返回false增删改查的方法不就挂了吗?

    //基类:数据库操作通用类
    public class BaseDao {
            protected Connection conn;
            protected PreparedStatement ps;
            protected Statement stmt;
            protected ResultSet rs;

            // 获取数据库连接
            public boolean getConnection() {
                    // 读出配置信息
                    String driver=ConfigManager.getInstance().getString("jdbc.driver_class");
                    String url=ConfigManager.getInstance().getString("jdbc.connection.url");
                    String username=ConfigManager.getInstance().getString("jdbc.connection.username");
                    String password=ConfigManager.getInstance().getString("jdbc.connection.password");
                    // 加载JDBC驱动
                    try {
                            Class.forName(driver);
                            // 与数据库建立连接
                            conn = DriverManager.getConnection(url, username, password);
                    } catch (ClassNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            return false;
                    } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            return false;
                    }
                    return true;
            }
            // 获取数据库连接
                    public Connection getConnection2() {
                            try {
                                    //初始化上下文
                                    Context cxt=new InitialContext();
                                    //获取与逻辑名相关联的数据源对象
                                    DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");
                                    conn=ds.getConnection();
                            } catch (NamingException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                            } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                            }
                            return conn;
                    }

            // 增删改 delete from news_detail where id=? and title=?
            public int executeUpdate(String sql, Object[] params) {
                    int updateRows = 0;
                    getConnection();
                    try {
                            ps=conn.prepareStatement(sql);
                            //填充占位符
                            for(int i=0;i<params.length;i++){
                                    ps.setObject(i+1, params[i]);
                            }
                            updateRows=ps.executeUpdate();
                    } catch (SQLException e) {
                            e.printStackTrace();
                    }
                    return updateRows;
            }

            // 查询
            public ResultSet executeSQL(String sql,Object[] params) {
                    getConnection();
                    try {
                            ps=conn.prepareStatement(sql);
                            //填充占位符
                            for(int i=0;i<params.length;i++){
                                    ps.setObject(i+1, params[i]);
                            }
                            rs=ps.executeQuery();
                    } catch (SQLException e) {
                            e.printStackTrace();
                    }
                    return rs;
            }

            // 关闭资源
            public boolean closeResource() {
                    if(rs!=null){
                            try {
                                    rs.close();
                            } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                    return false;
                            }
                    }
                    if(ps!=null){
                            try {
                                    ps.close();
                            } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                    return false;
                            }
                    }
                    if(stmt!=null){
                            try {
                                    stmt.close();
                            } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                    return false;
                            }
                    }
                    if(conn!=null){
                            try {
                                    conn.close();
                            } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                    return false;
                            }
                    }
                    return true;
            }

    }


    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表