JDBC笔记

这篇博客详细介绍了JDBC的概念、操作步骤以及核心API,包括DriverManager、Connection、Statement、ResultSet和PreparedStatement的使用。还讨论了PreparedStatement的预编译原理和数据库连接池的重要性,特别提到了Druid作为优秀的数据库连接池实现。
摘要由CSDN通过智能技术生成

JDBC简介

JDBC概念:

  • JDBC就是使用Java语言操作关系型数据库的一套API
  • 全称:(Java DataBase Connectivity)Java数据库连接

JDBC本质:

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

JDBC好处:

  • 各个数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变

步骤:

        1.创建工程,导入驱动jar包

        2.注册驱动

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

        3.获取连接

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

        4.定义SQL语句

        String sql = "update...";

        5.获取执行SQL对象

        Statement stmt = conn.createStatement();

        6.执行SQL

        stmt.executeUpdate(sql);

        7.处理返回结果

        8.释放资源

JDBC API 详解

DriverManager

  • DriverManager(驱动管理类)作用

        1.注册驱动

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

  •         查看Driver类源码

 提示:

  • MySQL5之后的驱动包,可以省略注册驱动的步骤
  • 自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类

        2.获取数据库连接

static ConnectiongetConnection(String url,string user,String password)
  • 参数

        1.url:连接路径

        语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2...

        示例:jdbc:mysql://127.0.0.1:3306/db1

        细节

  • 如果连接的是本机的mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql://数据库名称?参数键值对
  • 配置useSSL=false参数,禁用安全连接方式,解决警告提示

        2.user:用户名

        3.password:密码

Connection

  • Connection(数据库连接对象)作用:

        1. 获取执行SQL的对象

  • 普通执行SQL对象

        Statement createStatement()

  • 预编译SQL的执行对象:防止SQL注入

        PreparedStatement prepareStatement(sql)

  • 执行存储过程的对象

        CallableStatement prepareCall(sql)

        2. 管理事务

  • MySQL事务管理

        开启事务:begin;/start transaction;

        提交事务:commit;

        回滚事务:rollback;

        MySQL默认自动提交事务


  • JDBC事务管理:Connection接口中定义了3个对应的方法

        开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务

        提交事务:commit()

        回滚事务:rollback()

Statement

  • Statement作用:

        1.执行SQL语句

  • 执行SQL语句

        int executeUpdate(sql):执行DML、DDL语句

        返回值:(1)DML语句影响的行数 (2)DDL语句执行后,执行成功也可能返回0

        ResultSet executeQuery(sql):执行DQL语句

        返回值:ResultSet结果集对象

ResultSet

  • ResultSet(结果集对象)作用:

        1.封装了DQL查询语句的结果

        ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象

  • 获取查询结果

        boolean next():(1)将光标从当前位置向前移动一行;(2)判断当前行是否为有效行

        返回值:

                true:有效行,当前行有数据

                false:无效行,当前行没有数据

        xxx getXxx(参数):获取数据

        xxx:参数类型;如:int getint(参数);String getString(参数)

        参数:

                int:列的编号,从1开始

                String:列的名称

  • 使用步骤:

        1.游标向下移动一行,并判断改行是否有数据:next()

        2.获取数据:getXxx(参数)


        //循环判断游标是否是最后一行末尾

        while(rs.next()){

                //获取数据

                rs.getXxx(参数);

        }


PreparedStatement

  • PrepareStatement作用:

        1.预编译SQL语句并执行:预防SQL注入问题

(1)获取PreparedStatement对象

(2)设置参数值 

(3)执行SQL

  • SQL注入
    • SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

PreparedStatement 原理

  • PreparedStatement好处:

        1.预编译SQL,性能更高

        2.防止SQL注入:将敏感字符进行转义

(1)PreparedStatement 预编译功能开启:useServerPrepStmts=true

(2)配置MySQL执行日志(重启MySQL服务后生效)

  •  PreparedStatement 原理

        1.在获取PreparedStatement 对象时,将SQL语句发送给MySQL服务器进行检查,编译

        2.执行时就不用再进行这些步骤了,速度更快

        3.如果SQL模板一样,则只需要进行一次检查、编译


数据库连接池

数据库连接池简介

  • 数据库连接池是个容器,负责分配、管理数据库连接(connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
  • 好处:
    • 资源重用
    • 提升系统响应速度
    • 避免数据库连接遗漏

 数据库连接池实现

  • 标准接口:DataSource
    • 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口
    • 功能:获取连接
    • Connection getConnection()
  • 常见的数据库连接池:
    • DBCP
    • C3P0
    • Druid
  • Druid(德鲁伊)
    • Druid连接池是阿里巴巴开源的数据库连接池项目
    • 功能强大,性能优秀,是Java语言最好的数据库连接池之一
  • Druid使用步骤
    • 导入jar包druid-1.1.12.jar
    • 定义配置文件
    • 加载配置文件
    • 获取数据库连接池对象
    • 获取连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mister张!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值