单例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; } }优质内容筛选与推荐>>