package util;import java.sql.Connection;
import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mqy**/
public class JdbcUtil {private JdbcUtil() {}private static String driverClassName = "com,mysql.jdbc.Driver";private static String url = "jdbc:mysql:///jdbcdemo";private static String user = "root";private static String password = "root";//使用静态代码块实现 jdbcUtil的字节码被加载锦jvm中 并且只执行一次。避免每次使用都注册   static{try {Class.forName(DriverClassName);} catch (Exception e) {e.printStackTrace();}}//提供外界访问 public static Connection getConn(){try {return DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}return null;}
}

关闭资源

    //关闭资源  查询方法关闭资源 JdbcUtil.close(conn,st,rs)//增删改 关闭资源JdbcUtil.close(conn,st,null)public static void close(Connection conn,Statement st,ResultSet rs){try {if (rs != null) {rs.close();}} catch (Exception e) {e.printStackTrace();}finally {try {if (st != null) {st.close();}    } catch (Exception e2) {e2.printStackTrace();}finally {try {if (conn != null) {conn.close();}} catch (Exception e) {e.printStackTrace();}}}}
}

注意:⚠️上面的简单封装,虽然解决了在使用过程中书写重复代码的问题,不过还存在一个问题,那就是将数据库的基本信息写死在了源代码中,这样不利于维护,如果要修改每次得修改源代码。

解决方案:把数据库的连接信息抽取到一个配置文件(properties/xml)中存储。观察发现存储的信息,是以key-value的形式存在,所以采用properties文件存储。

在scr路径下新建一个bd.properties 文件并存储信息:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///jdbcdemo
user=root
password=root;

加载properties文件如下:

package util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Statement;/**** 实现对JDBC 的封装* @author mqy**/
public class JdbcUtil {private static    Properties properties = new Properties();//使用静态代码块实现 jdbcUtil的字节码被加载锦jvm中 并且只执行一次。避免每次使用都注册static{try {InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");properties.load(inputStream);Class.forName(properties.getProperty("driverClassName"));} catch (Exception e) {e.printStackTrace();}}private JdbcUtil() {}//提供外界访问 返回数据库的连接对象public static Connection getConn(){try {return DriverManager.getConnection(properties.getProperty("url"), properties.getProperty("user"), properties.getProperty("password"));} catch (Exception e) {e.printStackTrace();}return null;}    //关闭资源  查询方法关闭资源 JdbcUtil.close(conn,st,rs)//增删改 关闭资源JdbcUtil.close(conn,st,null)public static void close(Connection conn,Statement st,ResultSet rs){try {if (rs != null) {rs.close();}} catch (Exception e) {e.printStackTrace();}finally {try {if (st != null) {st.close();}    } catch (Exception e2) {e2.printStackTrace();}finally {try {if (conn != null) {conn.close();}} catch (Exception e) {e.printStackTrace();}}}}
}

转载于:https://www.cnblogs.com/741162830qq/p/6727538.html

【JDBC】实现对JDBC 连接的简单封装相关推荐

  1. java sublist_java中利用List的subList方法实现对List分页(简单易学)

    /** *//** * List分页 * 实现:利用List的获取子List方法,实现对List的分页 * @author 显武 * @date 2010-1-8 16:27:31 * */ impo ...

  2. 通过JDBC实现对Oracle,mysql数据库的增删改查,模糊查询,查询全部,根据ID查询,分页查询,统计查询,

    首先,需要了解一些连接Oracle的基础的知识 jdbc:oracle:thin:@localhost:1521:orcl是java程序通过jdbc连接oracle数据库的一种方式. 解释: jdbc ...

  3. 一个 JDBC 实现对 mysql 进行分页查询的 实例

    要在web页面显示分页后的学生信息,首先我们在navicat创建一个学生信息表 ,在这里我在表里插入了30 条数据 1,创建Student实体类 package com.lanou.entity;pu ...

  4. FFMPEG实现对AAC解码(采用封装格式实现)

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 原文:https://blog.csdn.net/hiwubihe/article/details/81261022 [音频编解码系列文章] 音 ...

  5. Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

    Spring JDBC     * Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发     * 步骤:         1. 导入jar包        ...

  6. c mysql封装 jdbc_彻底封装JDBC操作MySQL的连接。

    只需3步. 1.导入mysql的jar包. 略 2.封装配置文件db.properties driverClass = com.mysql.jdbc.Driver url = jdbc:mysql:/ ...

  7. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  8. java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装

    JAVA JDBC 常规增删改查简单封装,可满足大多基本要求 作用: 1, 查询列表是直接返回List对象,不必再遍历: 2, 单条查询直接返回对象: 3, 执行sql仅需一个方法搞定: packag ...

  9. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)...

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

最新文章

  1. 【VS实践】VS解决方案中出现无法生成DLL文件
  2. 使用ASP.NET操作IIS7中使用应用程序
  3. 查出引起死锁的进程和SQL语句
  4. TS和JS相对比的优势
  5. SQL 2005/2008 清空收缩日志
  6. Spring mvc 注解@ResponseBody 返回内容编码问题
  7. python识别图片坐标查看器_Opencv/python图像处理后如何获取检测区域的坐标
  8. PMP答题技巧(详细版)
  9. linux 脚本 if判断 o,shell脚本常用脚本:if判断
  10. “Mom, isn‘t Su Ruoxia coming back today?
  11. CSLA.Net3.6中使用CodeSmith
  12. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国
  13. java环境安装菜鸟教程,Java基础教程---JDK的安装和环境变量的配置
  14. 酷狗音乐flac转换成mp3格式
  15. 台风怎么看内存颗粒_入手三星Bdie颗粒内存条,只超到了3866MHz,看样子得换主板了...
  16. VC6中如何让改变控件Botton的字体(大小和字体)
  17. java特性菜鸟_Java attack - Java 特性
  18. 2022年词达人竞赛笔记
  19. c语言蚂蚁王国的货币系统,蚂蚁王国的探索之旅
  20. linux 桌面 v2ex,程序员:他人笑我桌面太凌乱,我笑他人看不穿

热门文章

  1. Docker 创建1个自己的Tomcat 镜像
  2. gradle中的JCenter与mavenCenter的区别
  3. Android MVVM封装,MVVMFramework
  4. java servlet filter_Java Servlet Filter
  5. 【教程】Linux 系统下对目录扩容的方法
  6. sizeof是c语言的一种运算符,C语言位运算和sizeof运算符详解
  7. thread_t 数组 linux,首页 C#如何打印pthread_t
  8. python unittest断言大全_Python-unittest框架 断言使用
  9. 安卓能不能安装jar_Sentaurus TCAD安装之jedit+TCAD宏包
  10. android将引入aot编译器,Android N混合使用AOT编译,解释和JIT三种运行时