博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC工具类与数据库建立连接
阅读量:4589 次
发布时间:2019-06-09

本文共 2758 字,大约阅读时间需要 9 分钟。

1.daoConfig.properties

userDaoClass=cn.itcast.jdbc.dao.impl.UserDaoJdbcImpl

#userDaoClass=cn.itcast.jdbc.dao.impl.UserDaoHibernateImpl

-----------------------------------------------------------------------------------------------------------

public final class JdbcUtils {

 private static DataSource myDataSource = null;

 private JdbcUtils() {}

 static {

  try {
   // 注册驱动
   Class.forName("com.mysql.jdbc.Driver");// 推荐
   // DriverManager.registerDriver(new com.mysql.jdbc.Driver());//2
   // System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver[:...:...]");//注册方式3可以注册多个驱动用“:”分隔。
   Properties prop = new Properties();
   // 读取配置文件
   InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
   prop.load(is);
   myDataSource = BasicDataSourceFactory.createDataSource(prop);
  } catch (Exception e) {
   throw new ExceptionInInitializerError(e);
  }
 }

 public static Connection getConnection() throws SQLException {

  return myDataSource.getConnection();

 }

 public static void free(ResultSet rs, Statement st, Connection conn) {

  try {
   if (rs != null)
    rs.close();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    if (st != null)
     st.close();
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    try {
     if (conn != null)
      conn.close();
     // myDataSource.free(conn);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  }
 }
}

-----------------------------------------------------------------------------------------------

使用单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

public final class JdbcUtilsSing {

 private String url="jdbc:mysql://localhost:3306/jdbc";
 private String user="root";
 private String password="064417";
 private static JdbcUtilsSing instance=null;
// private static JdbcUtilsSing instance=new JdbcUtilsSing();
 private JdbcUtilsSing(){
  
 }
 public static JdbcUtilsSing getInstance(){
  if(instance==null){
   synchronized(JdbcUtilsSing.class){
    if(instance==null){
     instance=new JdbcUtilsSing();
    }
   }
  }
  return instance;
 }
 static{
  try {
//   注册驱动
   Class.forName("com.mysql.jdbc.Driver");//推荐
//   DriverManager.registerDriver(new com.mysql.jdbc.Driver());//2
//   System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver[:...:...]");//注册方式3可以注册多个驱动用“:”分隔。
  } catch (ClassNotFoundException e) {
   throw new ExceptionInInitializerError(e);
  }
 }
 public Connection getConnection() throws SQLException{
  return DriverManager.getConnection(url, user, password);
 }
 public void free(ResultSet rs,Statement st,Connection conn){
  try {
   if(rs!=null)
    rs.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   try {
    if(st!=null)
    st.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally{
    try {
     if(conn!=null)
     conn.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
 }
}

转载于:https://www.cnblogs.com/mingforyou/archive/2011/12/17/2291406.html

你可能感兴趣的文章
package.json中 npm依赖包版本前的符号的意义
查看>>
Cygwin下获取Android源代码
查看>>
C 自删除技术---批处理方式
查看>>
maven学习(下)利用Profile构建不同环境的部署包
查看>>
win8自带输入法如何切换全角、半角操作流程
查看>>
TensorFlow windows 安装(base anaconda)
查看>>
Percona XtraDB Cluster集群
查看>>
mybatis学习笔记1--HelloMybatis
查看>>
正则表达式全局匹配网址
查看>>
js多张图片合成一张图,canvas(海报图,将二维码和背景图合并) -----vue
查看>>
前端页面刷新与跳转
查看>>
笔记本链接公司内网(跨网段) ,然后保证wifi
查看>>
Httpd做应用代理
查看>>
如何用Jmter生成合法的手机号
查看>>
Jmeter生成正常的人名
查看>>
Jmeter 做压力测试步骤
查看>>
jmeter生成随机的四位数
查看>>
Jmeter做接口的压力测试
查看>>
sql语句优化的30种方法
查看>>
MyISAM和InnoDB的区别
查看>>