JDBC笔记

JDBC

1.JDBC概述

    JDBC(Java DataBase Connectivity Java数据库连接)为多种DBMS(MySQL,Oracle,SQLServer,....)定义一套统一接口(统一Java API)

    ,这套统一接口(统一Java API)规定了用Java语言如何连接数据库,如何向数据发送SQL语句..其他数据库操作

  2.JDBC操作步骤

    a.导入要连接的数据库相关驱动

       导入MySQL驱动的jar包

    b.注册驱动

       告诉JVM使用的是哪个数据库驱动

    c.与数据库建立连接

    d.向数据库发送SQL语句并执行

    e.获取SQL语句的执行结果

    f.释放资源

  3.SQL注入

    利用createStatement向数据库管理系统发送SQL,可能出现SQL注入

     SQL语句:SELECT * FROM `user 1.JDBC概述

    JDBC(Java DataBase Connectivity Java数据库连接)为多种DBMS(MySQL,Oracle,SQLServer,....)定义一套统一接口(统一Java API)

    ,这套统一接口(统一Java API)规定了用Java语言如何连接数据库,如何向数据发送SQL语句..其他数据库操作

  2.JDBC操作步骤

    a.导入要连接的数据库相关驱动

       导入MySQL驱动的jar包

    b.注册驱动

       告诉JVM使用的是哪个数据库驱动

    c.与数据库建立连接

    d.向数据库发送SQL语句并执行

    e.获取SQL语句的执行结果

    f.释放资源

  3.SQL注入

    利用createStatement向数据库管理系统发送SQL,可能出现SQL注入

     SQL语句:SELECT * FROM `user` WHERE uname='abc' AND password='1'or'1=1'

     因此我们一般不使用 createStatement` WHERE uname='abc' AND password='1'or'1=1'

PreparedStatement预编译SQL

JDBC工具类

为了简化JDBC操作,提高代码复用性,将JDBC操作中重复代码抽取到一个工具类中

工具类中主要包含:

              1.注册驱动

              2.获取连接

              3.释放资源

增删改都用update,查询用query

只有query操作会返回结果集

update操作返回的是int值,即影响的行数

普通无配置文件工具类

集合properties文件工具类

创建db.properties文件:专门存储键值对

/**

* Properties 使用:我们主要使用它与 IO 流结合的特性

* void load(InputStream inStream)

* 从输入流中读取属性列表(键和元素对)。

* void load(Reader reader)

* 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)

* 我们一般用 properties 格式的文件专门存储键值对

*/

properties.load(new FileInputStream("src/db.properties"));//在单元测试中 IO

流文件的相对路径相对的是当前模块

用这种方法的话,有可能路径填写错误

所以我们直接用类加载器中的getResourceAsStream()方法,该方法默认从类的根路径读取文件  

 String

getProperty(String key)
          
用指定的键在此属性列表中搜索属性。

以上两种方式区别主要在于:

注册驱动方式不同:

       普通的在源代码里就已经定义好各项参数的值,不方便以后修改

       properties工具类将各项参数的值定义在db.properties文件中,再通过流读取

       到文件,作为参数传递给properties构造方法,将键值对封装到properties属性

       集中,之后通过getproperty()方法来获取键值对中的值

连接池技术

用池来管理 Connection,这样可以重复使用 Connection。有了池,所以我们就不用自己来创建 Connection,而是通过池来获取 Connection 对象。当使用完 Connection 后,调用 Connection 的 close() 方法也不会真的关闭 Connection,而是把 Connection“归还”给池。池就可以再利用这个 Connection 对象了。

DBCP连接池

使用DBCP连接池

利用DBCP优化JDBC工具类

不需要自己创建连接,而是从DBCP连接池中获取连接,节约资源

DButils工具包

DBUtils 是 java 编程中的数据库操作实用工具,小巧简单实用。

DBUtils 封装了对 JDBC 的操作,简化了 JDBC 操作,可以少写代码。

Dbutils 三个核心功能介绍

⚫ QueryRunner 中提供对 sql 语句操作的 API.

⚫ ResultSetHandler 接口,用于定义 select 操作后,怎样封装结果集.

⚫ DbUtils 类,它就是一个工具类,定义了关闭资源与事务处理的方法

未使用连接池工具类进行增删改

使用连接池工具类进行增删改(不用自己创建连接)

利用DBUtils进行查询操作

/*

 * 1.底层会拼接预编译 SQL,将拼接好的 SQL 发送到数据库执行

 * SELECT * FROM product WHERE pid=8

 * 2.将查询结果集的第一行数据通过对应的 JavaBean 的 setter 方法封装到对象中

 * 3.返回该对象

 */

BeanHandler

BeanListHandler

MapHandler

MapListHandler

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值