JDBCUtils工具类

  1. 私有化构造函数,外界无法直接创建对象
  2. 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接
  3. 提供公共的,静态的,close方法,用来释放资源
package cn.tedu.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ResourceBundle;

/**

 * 这个类用来提供jdcb的工具类

1.1   私有化构造函数,外界无法直接创建对象

1.2   提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接

1.3   提供公共的,静态的,close方法,用来释放资源

1.4   测试类

 */

public class JDBCUtils {
//1,私有化构造函数,外界无法直接创建对象
   private JDBCUtils(){}

   //只加载一次属性文件
   static ResourceBundle rb = null;
   static{
      //a,,,,读取属性文件
      rb = ResourceBundle.getBundle("jdbc");
   }

   //2,提供公共的,静态的,getConnection 方法,
   //用来给外界提供数据库连接
   public static Connection getConnection(){
      try {
         //1,注册驱动
         //b,,获取属性文件里的内容
         Class.forName(rb.getString("driverClass"));

         //2,获取数据库连接
         String url=rb.getString("jdbcUrl");
         String user=rb.getString("user");
         String password=rb.getString("password");

         Connection conn = DriverManager.getConnection(url, user, password);
         return conn;

      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }

   //3,提供公共的,静态的,close方法,
   //用来释放资源
   public static void close(ResultSet rs, Statement st,Connection conn){
      //释放结果集资源
      //非空判断,防止空指针异常
      if(rs!=null){
         try {
            rs.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            rs=null;//手动置空
         }
      }
      //释放传输器资源
      //非空判断,防止空指针异常
      if(st!=null){
         try {
            st.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            st=null;//手动置空
         }
      }

      //释放数据库连接资源
      //非空判断,防止空指针异常
      if(conn!=null){
         try {
            conn.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            conn=null;//手动置空
         }
      }
   }

测试类

package cn.tedu.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.mysql.jdbc.Driver;
import cn.tedu.util.JDBCUtils;

/**
 * 这个类用来测试工具类
 */

public class TestUtils {
   //单元测试方法:@Test  +  void
      @Test
      public void hello(){
         Connection conn = null;//声明连接对象
         Statement st = null;//声明传输器对象
         ResultSet rs = null;//声明结果集对象
         try {
            //1,注册驱动    2,获取数据库连接
            conn = JDBCUtils.getConnection();
            //3,获取传输器java.sql.Statement
            st = conn.createStatement();
      //    4,执行SQL。java.sql.ResultSet
            String sql ="select * from user";
            rs = st.executeQuery(sql);
      //    5,遍历结果集
            while(rs.next()){
                //根据列的索引获取第一列的数据
      //       String id = rs.getString(1);
                //根据列的名字获取第一列的数据
                String id = rs.getString("id");
      //       int id1  = rs.getInt(1);
                //根据列的索引获取第二列的数据
                String username = rs.getString(2);
                //根据列的索引获取第三列的数据
                String password = rs.getString(3);
                System.out.println(id+username+password);
            }
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{//保证资源一定会被释放
      //    6,释放资源
            JDBCUtils.close(rs, st, conn);
         }
      }
}

准备数据

配置文件的开发形式

//2,提供公共的,静态的,getConnection 方法,

   //用来给外界提供数据库连接

   public static Connection getConnection(){

      try {

         //a,,,,读取属性文件

         ResourceBundle rb =

                ResourceBundle.getBundle("jdbc");

         //1,注册驱动

//b,,获取属性文件里的内容

         Class.forName(rb.getString("driverClass"));

         //2,获取数据库连接

         String url=rb.getString("jdbcUrl");

         String user=rb.getString("user");

         String password=rb.getString("password");

         Connection conn =

                DriverManager.getConnection(

                      url, user, password);

         return conn;

      } catch (Exception e) {

         e.printStackTrace();

      }

      return null;

   }

创建JDBCUtils工具类的更多相关文章

  1. JavaWeb基础之JdbcUtils工具类final

    JdbcUtils工具类3.0最终版,添加了事务相关功能和释放链接.最终版本可以直接打成jar包,在后面的基本项目都会使用该工具类 1. JdbcUtils代码 /** * 最终版 * @author ...

  2. JavaWeb基础之JdbcUtils工具类1.0

    2016年12月20日,第一次学习JDBC.看的是传智播客崔希凡老师的视频,东北口音很是风趣幽默,技术之牛让人膜拜.2017年9月21日,再次重温web知识,分享JdbcUtils工具类,用以接下来的 ...

  3. 记一次关于JDBCUtils工具类的编写

    jdbc.properties数据库配置的属性文件内容如下 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/xxxx ...

  4. Druid 连接池 JDBCUtils 工具类的使用

    Druid工具介绍 它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. 支持所有JDBC兼容的数据库,包括Oracle.MySQL. ...

  5. hibernate课程 初探一对多映射2-3 创建hibernateUtil工具类

    本节主要内容:创建hibernateUtil工具类:demo demo: HibernateUtil.java package hibernate_001; import org.hibernate. ...

  6. 【JDBC】学习路径5-提取JDBCUtils工具类

    回顾我们上面几节的内容,我们发现重复代码非常多,比如注册驱动.连接.关闭close()等代码,非常繁杂. 于是我们将这些重复的大段代码进行包装.提取成JDBCUtils工具类. 第一章:提取注册连接模 ...

  7. 01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

    [工程截图] [代码实现] [Mail.java] package com.Higgin.Utils; import java.util.ArrayList; import java.util.Lis ...

  8. JavaWeb基础之JdbcUtils工具类2.0

    使用c3p0连接池来改版JdbcUtils工具 1. 使用c3p0连接池获取连接,使代码更加简单 /** * 使用c3p0连接池做小工具 * JdbcUtils v2.0 * @author hui. ...

  9. Java课程设计---创建数据库工具类

    1.传统的数据库操作 package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import ...

随机推荐

  1. DHU 1788 Chinese remainder theorem again 中国剩余定理

    Chinese remainder theorem again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  2. 使用AutoFac组织多项目应用程序

    较复杂的应用程序都是由多个项目组织成的,项目可以划分成程序集(Assemblies)和宿主(Hosts),也就是应用程序的入口.      Assemblies 通常是常见的类库项目,包括可以重用的功 ...

  3. MyBatis入门(一)—— 入门案例

    一.MyBatis简介 MyBatis是面向sql的持久层框架,他封装了jdbc访问数据库的过程,我们开发,只需专注于sql语句本身的拼装,其它赋值的过程全部可以交给MyBatis去完成. 与Hibe ...

  4. LINQ语法类似于SQL的语法

    LINQ语法类似于SQL的语法如下, Models.BookStoreEntities 是从添加新建项中的数据--->ADO.NET实体数据模型--->从数据库生成--->使用5.0 ...

  5. 在AE二次开发中出“正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。”异常解决方案

    今天的一个项目总用到了AE的开发组件,也就是ESRI公司提供的一系列的开发包(组件)都是以dll(动态链接库的形式)然后今天在调试的时候却出现了“正试图在 OS 加载程序锁内执行托管代码.不要尝试在 ...

  6. HDU4418 Time travel(期望dp 高斯消元)

    题意 题目链接 Sol mdzz这题真的太恶心了.. 首先不难看出这就是个高斯消元解方程的板子题 \(f[x] = \sum_{i = 1}^n f[to(x + i)] * p[i] + ave\) ...

  7. Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  8. vue-cli中的webpack配置

    编辑模式下显示正常,打开的时候不知道为啥排版有问题.segementfalut链接在这里 版本号 vue-cli 2.8.1 (终端通过vue -V 可查看) vue 2.2.2 webpack 2. ...

  9. OpenGL学习--03--矩阵

    Model--View--Projection 1.tutorial03.cpp // Include standard headers #include <stdio.h> #inclu ...

  10. LGWR和DBWn的触发条件

    Rolling Forward(前滚) Oracle启动实例并加载数据库,然后通过Online Redologs中的重做日志,重现实例崩溃前对数据库的修改操作.在恢复过程中对于已经提交的事务,但尚未写 ...