单例DBUtil


package com.jdbc.util;

/*
 * 数据库应用中,连接的产生和关闭是非常耗时间的,
 * 所以我们应该尽量去避免这样的操作
 * 以后可以使用数据库连接池解决
 * 
 * 现在我们使单例模式,只有一个连接,而且永不关闭
 * 
 * 单例模式第一件事让类的构造方法私有化
 */
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DBUtil {

    // 1.类构造私有化,

    private DBUtil() {

    }

    // 2.连接静态化
    private static Connection conn;

    public static Connection getConn() {

        if (conn == null) {//如果第一次得到连接,产生连接,仅此一次
            try {
                Properties p = new Properties();//读取配置的工具
                p.load(new FileReader("src/com/jdbc/util/jdbc.ini"));//读取配置文件
                // 1.加载mysql连接到数据库jar包,数据库驱动
                Class.forName(p.getProperty("jdbc.driver"));
                // 2.数据库所在位置以及要访问数据库的名字
                String url = p.getProperty("jdbc.url");
                // 3.数据库的用户名,密码
                String username = p.getProperty("jdbc.username");
                String password = p.getProperty("jdbc.password");
                // 4.使用驱动管理器连接到数据库
                conn = DriverManager.getConnection(url, username, password);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return conn; //如果不是第一次得到连接直接返回现有的conn
    }

}
#this is a values;
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.58:3306/stu
jdbc.username=root
jdbc.password=root

package com.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.jdbc.bean.SC;
import com.jdbc.util.DBUtil;

public class SCdao {
    
    //1.操作执行语句的对象
    private PreparedStatement ps;
    //2.存放查询操作结果语句的对象
    private ResultSet rs;
    
    //关闭资源的方法
    public void clearUp(Connection conn){
        
        try {
            if(rs != null){
                rs.close();
            }
            if(ps != null){
                ps.close();
            }
            if(conn != null){
            //    conn.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    //联合查询之后,数据处理
    public List<SC> findAll(){
        
        List<SC> list = new ArrayList<SC>();
        String sql = "select s.sn,c.cn,sc.g from sc inner join s on sc.sid=s.sid inner join c on sc.cid=c.cid";
        
        Connection conn = DBUtil.getConn();
        try {
            ps = conn.prepareStatement(sql);
            
            rs = ps.executeQuery();
            while(rs.next()){
                
                SC sc = new SC();
                sc.getS().setSn(rs.getString(1));
                sc.getC().setCn(rs.getString(2));
                sc.setG(rs.getString(3));
                
                list.add(sc);
                
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            this.clearUp(conn);
        }
        return list;
    }

}

优质内容筛选与推荐>>
1、2014年实现的15个预言
2、几张图看一下Intel和NVIDIA显卡虚拟化
3、Ubuntu配置lamp环境
4、为什么HashCode相同的两个对象可能不相等?
5、520|机器人竟然对我表白了?!用Python假装自己有女朋友(附代码)


长按二维码向我转账

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

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

    已发送

    朋友将在看一看看到

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

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

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

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