JDBC详细总结

本文详细介绍了JDBC的基本概念、编程步骤,包括注册驱动、获取连接、执行SQL等,并探讨了JDBC管理事务、数据库连接池如C3P0和Druid的使用,以及Spring框架下的JDBCTemplate。内容涵盖了解决SQL注入问题、连接池的引入原因和好处,旨在帮助读者深入理解JDBC操作数据库的全过程。
摘要由CSDN通过智能技术生成

目录

JDBC基本概念

快速入门

对JDBC各个接口和类的详解

 注册驱动

 获取数据库的连接对象

 获取执行sql语句的对象

 执行sql

 简易过程图

JDBC基础练习

 接收返回结果

 抽取工具类

 综合案例:实现登录

 SQL注入问题

解决SQL注入问题

 JDBC管理事务

 数据库连接池

引入原因:

 数据库连接池概念:

引入数据库连接池的好处:

实现:

获取连接:

归还连接:

数据库连接池实现

C3P0:

 C3P0的基本使用

 Druid:

 Druid基本使用

 Druid工具类

 JDBCTemplate

引入

步骤


JDBC基本概念

基本概念:Java DataBase Connectivity , Java数据库连接,Java语言操作数据库。

面向接口编程:接口都有调用者和实现者。面向接口调用,面向接口写实现类,这都属于面向接口编程。

面向接口编程的目的:解耦合:降低程序的耦合度,提高程序的扩展力。

引入JDBC:每一个数据库产品的底层实现原理都不一样,需要接口来统一规则,方便程序员编码。

JDBC的本质:其实是sun公司官方提供的一套操作所有关系型数据库的规则,即接口。各个数据库厂商(接口的实现者)去实现这套接口,提供数据库驱动jar包,我们(接口的调用者)可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类。

数据库驱动:各个厂商写的不同的接口的实现类又称数据库驱动,所有的数据库驱动都是以jar包的形式存在,jar包当中的*.class文件都是对JDBC接口的实现

 

快速入门



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JdbcTest01 {
    public static void main(String[] args) throws Exception {
        //导入驱动jar包
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取数据库的连接对象
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3307/db2","root","root");
        //定义sql语句
        String sql = "update account set balance = 500 where id = 1";
        //获取sql执行的对象
        Statement statement = connection.createStatement();
        //执行sql
        int count = statement.executeUpdate(sql);//返回执行sql语句后影响了几行数据
        System.out.println(count);
        //释放资源
        statement.close();
        connection.close();

    }
}

 JDBC编程步骤 

1.导入MYSQL的驱动jar包:即MYSQL厂商的JDBC实现类。将mysql-connector-java-5.1.37-bin.jar导入工程中。

IDEA中步骤:导入驱动jar包-->创建libs文件夹(方便管理)-->将其复制到文件夹-->右键add as library(将jar包加入到工作空间中)

2.注册驱动:告诉Java程序,即将要连接的是哪个品牌的数据库

3.获取数据库的连接对象:表示JVM的进程和数据库进程之间的通信打开了,这属于进程之间的通信,使用完之后一定要关闭通道。

4.定义sql语句

5.获取执行sql语句的对象:专门用来执行sql语句的对象

6.处理查询结果集:只有当执行的是select语句,才会有处理结果集

8.释放资源:使用完资源之后一定要关闭资源,Java和数据库之间属于进程之间的通信,开启之后一定要关闭。

对JDBC步骤详解

 注册驱动

注册驱动方法一:

      //1.注册驱动
            /*
                等号左边是sun公司提供的接口,等号右边是mysql厂家提供的实现类(驱动)之一---->com.mysql.jdbc.driver类
                利用了多态,父类引用指向子类对象。
             */
            Driver driver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);

DriverManager类是sun公司提供的管理一组 JDBC 驱动程序的基本服务。

DriverManager类中的静态registerDriver方法用于注册给定驱动程序。

 查看需要传入的参数-Driver对象:Driver是sun公司提供的接口,供厂商实现。以MYSQL为例,Driver接口的实现类为 mysql驱动中的com.mysql.jdbc.driver类。

注册驱动方法二:

由于填入的参数是字符串,字符串可以写入配置文件中,故该方法常用。

   Class.forName("com.mysql.jdbc.Driver");

 还记得反射吗?如果忘啦,请看看这篇反射

MYSQL厂商提供的jar包中包含了一个与数据库连接的类——com.mysql.jdbc.Driver即驱动,我们通过反射技术Class.forName("全类名")来将字节码文件加载到内存中,由于注册驱动的语句写在静态代码块,所以会随着类加载静态代码块被执行,即完成注册驱动。

注意:Class.forName(全类名)此处不需要接收class返回值,因为我们只需要它的类加载动作。

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    //
    // Register ourselves with the DriverManager
    //
    static {
        try {
            //注册驱动
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
 

 获取数据库的连接对象

         //2.获取连接
            String url = "jdbc:mysql://localhost:3307/db1";
            String user = "root";
            String password = "root";
            Connection conn = DriverManager.getConnection(url,user,password);

  DriverManager类中的静态getConnection方法可以返回一个连接对象。

参数URL:统一资源定位符(网络中某个资源的绝对路径),包括通信协议,服务器IP地址(相当于用于定位某台计算机的代号),服务器上某个软件的端口(相当于用于定位该计算机上某个软件的代号),服务器上某个资源名

url:  mysql写法:jdbc:mysql://ip地址(域名):端口号/数据库名称

注意:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为

jdbc:mysql:///数据库名称

 获取执行sql语句的对象

//3.获取数据库操作对象-用于执行sql语句
            Statement stat = conn.createStatement();

 Connection是一个sun公司的提供给我们的接口。

Connection中有一个静态方法createStatement()方法(厂商已经实现,所以可以直接使用对象调用)创建一个Statement对象来执行sql语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值