使用JDBC获取数据库的连接,大字分为三个步骤

1、获取驱动包名,定义URL,database_username,database_password

2、获取Connection对象

3、利用Connection对象获取Statement或者PreparedStatement对象

4、再调用PreparedStatement对象的executeQuery()、executeUpdate()方法去进行操作

5、释放对象和资源

这5步都比较繁琐,特别是第1步,其中耦合度比较低的是的是第1步,第2步。

通用的做法是将获取Connection对象的过程单独抽出来,做成工具,以后使用的时候直接调用就行。

但是又需要在系统启动的时候就将配置文件读进来,并且不反复读取,就只有使用静态代码块static{}了。

同理,获取驱动包的操作也是,执行一次就够了。

第5步释放对象和资源,其实也可以抽象出来,如果执行的是executeUpdate(),关闭两个对象,如果执行的是查询语句,多关闭一个result对象就可以了。


此处强烈推荐使用连接池,每次自己获取Connection对象,容易出错,也繁琐。推荐使用c3p0


jdbc.properties配置文件内容

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/loginpractice
username=root
password=1234

JdbcUtils源码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;

public class JdbcUtils {
        //1、创建四个常量 DRIVERCLASS URL DATABASE PASSWORD
        //2、构建静态代码块,读取配置文件,给常量赋值
        //3、获取Connection对象
        private static final String DRIVERCLASS;
        private static final String URL;
        private static final String USERNAME;
        private static final String PASSWORD;
        static {//读取配置文件
            DRIVERCLASS = ResourceBundle.getBundle("jdbc").getString("driverClass");
            URL = ResourceBundle.getBundle("jdbc").getString("url");
            USERNAME = ResourceBundle.getBundle("jdbc").getString("username");
            PASSWORD = ResourceBundle.getBundle("jdbc").getString("password");
        }
        static {
            try {// 将加载驱动操作,放置在静态代码块中.这样就保证了只加载一次.
                Class.forName(DRIVERCLASS);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        public static Connection getConnection() throws SQLException {
            // 2.获取连接
            Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            System.out.println("获取连接成功");
            return con;
        }
}

JDBC获取数据库Connection的工具抽取的更多相关文章

  1. 通过jdbc获取数据库中的表结构

    通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类   1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...

  2. 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类

    http://www.cnblogs.com/lbangel/p/3487796.html 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的 ...

  3. 使用JDBC获取数据库中的一条记录并封装为Bean

    比如我数据库中存入的是一条一条的用户信息,现在想取出一个人的个人信息,并封装为Bean对象,可以使用queryForObject来获取数据并通过new BeanPropertyRowMapper(Be ...

  4. Java -- JDBC 获取数据库自动 生成的主键值

    public class Demo4 { /* create table test1 ( id int primary key auto_increment, name varchar(20) ); ...

  5. jmeter使用jdbc获取注册验证码进行注册

    自动化工具测试注册功能时,往往会遇到验证码,这个烦人的验证码怎么能够解决掉呢? 通常有两种方法 让开发禁用注册码,或在测试环境写个固定的验证码 在jmeter中用 jdbc获取数据库中验证码 今天通过 ...

  6. Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题(转)

    前言 关于Spring的事务,它是Spring Framework中极其重要的一块.前面用了大量的篇幅从应用层面.原理层面进行了比较全方位的一个讲解.但是因为它过于重要,所以本文继续做补充内容:Spr ...

  7. Java -- JDBC 学习--获取数据库链接

    数据持久化 持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大 ...

  8. JDBC核心技术(获取数据库链接、数据库事务、数据库链接池)

    @ 目录 前言 数据的持久化 Java数据存储技术 JDBC介绍 JDBC体系结构 获取数据库链接 Driver接口 加载注册JDBC驱动 获取数据库链接 数据库链接方式(实例) 方式一:代码中显示出 ...

  9. jdbc 获取connection 对象的三种方式

    获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...

随机推荐

  1. ThinkPHP 实现验证码渲染、校验、点击刷新

    一.在控制器中写方法,生成验证码,代码如下: /** * 验证码生成 * expire 验证码的有效期(秒) * useImgBg 是否使用背景图片 默认为false * fontSize 验证码字体 ...

  2. year:2017 month:7 day:17

    2017-07-17 JavaScript 1.javascript 中的运算符 (1)算数运算符:+ ,- ,* ,/ ,% (2)位运算符:& ,| ,~  ,^ ,<< (左 ...

  3. nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(上)

    一.简介 nop通过插件机制可以支持更多的支付扩展,我们通过编写支持退款的支付宝插件来更好的理解支付插件的扩展. 先分享下支付宝插件源码点击下载,由于时间原因,本篇只介绍使用该插件,下一篇结合插件进行 ...

  4. EF 中 Code First 的数据迁移以及创建视图

    写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功 ...

  5. 如何使用Androidstudio创建一个新项目

    首先打开AS,然后 选择第一个选项Start a new Android Studio project 填写包名和项目名,点击next 选择项目类型,点击next 选择UI类型(都是死丢丢帮你生成的) ...

  6. 使用Visual Studio Code调试基于ActionScript的LayaAir HTML5游戏

    使用Visual Studio Code(VS Code)调试的优势 使用VS Code我们可以极大地提高LayaAir Html5游戏项目的调试效率,VS Code的优势有以下几点: 在发生Java ...

  7. git版本控制 for window安装和命令行使用

    Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...

  8. Log4Net .NET log处理

    1.NuGet 安装Log4Net. 2.新建一个Common的project,并且添加一个LogWriter的类: public class LogWriter { //Error log publ ...

  9. request.getParameter()与request.setAttribute()的区别 (转载)

    request.getParameter()与request.setAttribute()的区别 request.getParameter(),request.setAttribute()区别如下: ...

  10. hadoop生态圈列式存储系统--kudu

    介绍 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器.Kudu 共享 Hadoop 生态系统应用的常见技术特性: 它在 commodity hardware(商品硬件)上 ...