A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© perry2017 初级黑马   /  2018-1-11 15:21  /  715 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-1-12 10:29 编辑

JDBC概述
JDBC概念和数据库驱动程序
  • JDBC
    • Java DataBase Connectivity, Java数据库连接. 是一种技术的名称
    • 是SUN公司提供的用于执行SQL语句的Java API, 用为多种关系型数据库提供统一的访问. 它由一组用Java语言编写的类和接口组成, 是Java访问数据库的标准规范
  • 数据库驱动
    • 两个不同的设备要通信, 需要满足一定的通信数据格式, 数据格式由设备提供商规定, 设备提供商为设备提供驱动软件, 通过驱动软件就可以让两个设备通信.
    • Java和MySQL数据库就可以看作2个不同的设备, JDBC需要使用数据库驱动来让Java代码与数据库服务器通信, 将Java中的SQL字符串发送给数据库来执行
    • 数据库驱动有多种, 用于不同开发语言, 对于Java也有专门的一个驱动

JDBC原理
  • JDBC是一套API, 可以通过Java代码来使用JDBC, 同时提供了一套接口, 用于让数据库厂商根据自家数据库特点去实现JDBC的功能
  • 数据库驱动是数据库厂商根据自家数据库特点去实现JDBC接口而制作的, 用于让JDBC能够调用数据库的相关功能
  • Java程序通过使用JDBC的API, 通过多态的方式调用数据库驱动中实现类的方法, 对数据库进行操作             +----------+           | Java程序 |           +-----+----+                 |           +-----+----+           |   JDBC   |           |    接口   |           +-----+----+                 |       +---------+---------+       |                   |+------+------+     +------+------+|  MySQL驱动   |     |  Oracle驱动 ||    实现类    |     |    实现类   |+------+------+     +------+------+       |                   |+------+------+     +------+------+| MySQL数据库  |     | Oracle数据库 |+-------------+     +-------------+

JDBC开发步骤
1、注册驱动
  • java.sql.DriverManager类: 管理JDBC驱动
    • static void registerDriver(Driver driver): 注册数据库驱动
  • java.sql.Driver接口: 数据库驱动必须实现的接口. 在数据库驱动jar包中已经实现了
  • 注册驱动的2种方式
    • 方式1: DriverManager.registerDriver(new Driver());


        其中Driver类是jar包驱动中的实现类, 如com.mysql.jdbc.Driver
    • 方式2: Class.forName("com.mysql.jdbc.Driver");


        这是MySQL推荐的, 内部也是使用方式1实现的
注意


    MySQL驱动com.mysql.jdbc.Driver类中中已经编写了注册驱动的方法. 我们只需要通过反射去加载MySQL的驱动类, 让其中的静态代码块执行, 从而注册驱动即可. 不要手动注册驱动导致资源浪费
2、获取数据库连接对象
  • java.sql.DriverManager类
    • static Connection getConnection(String url, String user, String password) : 获取Connection接口的实现类, 实现类是jar包中实现的
      >>url: 数据库地址, jdbc:mysql://主机IP:端口号/数据库名
      >>主机IP或端口号可以省略, 默认使用localhost和3306: jdbc:mysql:///day02_04
      >>user: 数据库用户名
      >>password: 数据库登录密码
3、获取数据库连接对象
  • Statement s = conn.createStatement(); : 不安全的
  • PreparedStatement ps = conn.prepareStatement(String sql); : 可以防范SQL注入
    • 占位符: ?, 即使是字符串, 也不要给问号加引号
    • void setObject(int index, Object obj) //index从1开始
4、执行SQL语句
  • Statement
    • 增删改: int s.executeUpdate(String sql)----判断操作是否成功: 判断返回值是否>0则生效, 否则不成功
    • 查询: ResultSet rs = s.executeQuery(String sql)
  • PreparedStatement
    • 增删改: int ps.executeUpdate(); ----判断操作是否成功: 判断返回值是否>0则生效, 否则不成功
  • 查: ResultSet rs = ps.executeQuery();
5、处理结果
  • ResultSet
    • boolean next();: 将指针向后移动, 如果有下一个记录则true, 否则false


        默认不执行的之后, 指针在第一条记录之前; 只有调用一次才能指向第一条: while (rs.next()) {}
    • String getString(String 列名): 获取指定列的值, 以String类型
    • Object getObject(String 列名): 获取指定列的值, 以Object类型
6、释放资源
  • resultSet.close()
  • preparedStatement.close()
  • statement.close()
  • connection.close()

DBUtils:



    是Apache的Commons项目中的组件;
    用于简化JDBC的开发;
    和我们自定义的JDBCUtils的目的一样, 简化开发

QueryRunner类: 提供操作SQL语句的API
  • QueryRunner(): 创建对象
  • int update(Connection conn, String sql, Object... param): 执行INSERT, DELETE, UPDATE语句, 同时传入占位符的参数值, 是可变参数
  • <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params): 执行SELECT查询, 并根据传入的结果集处理器来处理结果

JDBC原理
  • JDBC是一套API, 可以通过Java代码来使用JDBC, 同时提供了一套接口, 用于让数据库厂商根据自家数据库特点去实现JDBC的功能
  • 数据库驱动是数据库厂商根据自家数据库特点去实现JDBC接口而制作的, 用于让JDBC能够调用数据库的相关功能
  • Java程序通过使用JDBC的API, 通过多态的方式调用数据库驱动中实现类的方法, 对数据库进行操作             +----------+           | Java程序 |           +-----+----+                 |           +-----+----+           |   JDBC   |           |    接口   |           +-----+----+                 |       +---------+---------+       |                   |+------+------+     +------+------+|  MySQL驱动   |     |  Oracle驱动 ||    实现类    |     |    实现类   |+------+------+     +------+------+       |                   |+------+------+     +------+------+| MySQL数据库  |     | Oracle数据库 |+-------------+     +-------------+

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马