JDBC协议(及其驱动程序)

概述

JDBC——Java DataBase Connectivity 即为Java数据库连接技术,可以用于访问多种数据库:MySQL、Oracle和其他数据库。

前提:装载特定厂商提供的数据库驱动程序(Driver),通过JDBC的API访问数据库。

8.0.31版本MySQL驱动链接:

链接:https://pan.baidu.com/s/1CTSvjPF9I_RezCqsklHipA 
提取码:sygx

核心的类与接口

JDBC核心API都包含在java.sql包中,主要核心类有:

  • DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
  • SQLException:有关数据库操作的异常。

JDBC核心接口主要有: 

  • Connection:特定数据库的连接,在连接上下文中执行SQL语句并返回结果。
  • Statement:用于执行静态SQL语句并返回它所生成结果的对象。
  • PreparedStatement:Statement类的子类,表示预编译的SQL语句的对象,继承并扩展了Statement接口。
  • CallableStatement:(了解即可)Statement类的子类,用于执行SQL存储过程的接口,继承并扩展了PreparedStatement接口。
  • ResultSet:装载数据库结果集的接口,用于数据查询。

创建JDBC

步骤

  1. 载入JDBC驱动程序:使用Class.forName()方法加载特定的驱动程序
    //使用Class.forName()方法加载特定的驱动程序
    forName("com.mysql.cj.jdbc.Driver");

  2. 定义连接URL,建立数据库对象:jdbc:mysql://:主机名或IP:3306/<数据库名>
    //2.创建数据库连接
              Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/lx?serverTimeZone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false","数据库用户名","数据库密码");
                

  3. 创建Statement对象
    PreparedStatement pstmt=conn.prepareStatement(sql);//sql为String类型的SQL语句

  4. 执行查询或更新的数据库操作
    pstmt.executeQuery();//查询SQl语句
    pstmt.executeUpdate();//更新SQL语句

  5. 处理结果集:主要包括next()方法,用于移动结果集游标,逐行处理结果集,getString()、getInt()、getDate()、getDouble()等方法,用于将数据库中的数据类型转换为Java的数据类型。
    while (rs.next()){//光标推进一格,其中数据是否有效,默认光标在第一个单元格的上方
                       System.out.println(rs.getString("username"));//通过列名找到对应列数据
                       System.out.print(rs.getString(1));//方法重载,通过列排序找到对应列数据
                       System.out.print(rs.getString(2));
                       System.out.println(rs.getString(3));
    }

JDBC中主要的类

  1. Class类
    1. public static Class forName(String className):该方法根据给定的字符串参数返回相应的Class对象。即载入JDBC驱动程序,创建数据库访问渠道对象。

    2. public String getName():该方法返回类名

  2. DriverManager类:维护与数据库驱动程序之间的连接。它实现驱动程序的装载、创建与数据库系统连接的Connection类对象

    1.  DriverManager.getConnection(URL,数据库登录名,数据库密码):连接指定数据库

  3. Connection接口:管理指定数据库的连接

    1. createStatement()方法:创建Statement类的实例

    2. prepareStatement()方法:创建PreparedStatement类的实例。

    3. close():立即释放此Connection对象的数据库和JDBC资源

  4. Statement接口:提供执行数据库操作的方法

    1. executeQuery()方法:它用来执行一个查询语句,参数是一个String对象,就是一个SELECT语句。它的返回值是ResultSet类的对象,查询结果封装在该对象中。

    2. executeUpdate()方法:它用来执行更新操作,参数是一个String对象,即一个更新数据表记录的SQL语句。使用它可以对表中的记录进行修改、插入和删除等操作。

    3. close():关闭Statement对象。

  5. ResultSet接口:提供对查询结果集进行处理的方法

    1. next()方法:光标移到下一条记录,返回一个boolean值。光标的默认初始位置是有效对象的上方。

    2. previous()方法:光标移到前一条记录。

    3. getXXX()方法:获取指定类型的字段的值。调用方式 getXXX("字段名") 或 getXXX(int i)。i值从1开始表示结果集中第一列的字段。

    4. close():关闭ResultSet对象

JDBC日期时间处理

对于数据库中不同的时间类型,要分别采用与之相对应的Java包装类来存取: 

  • 日期类型用java.sql.Date getDate():取年月日
  • 时间类型用java.sql.Time getTime():取时分秒
  • 日期/时间类型用java.sql.Timestamp; getTimestamp():取年月日时分秒

将JDBC的日期/时间类型转换为字符串:

Timestamp timeStamp = rs.getTimestamp("birth");		//通过数据库访问获取到该数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //格式化日期
String str = sdf.format(timeStamp); 

将java.sql.Timestamp转换为java.util.Date:

java.sql.Timestamp ts; 
java.util.Date utilDate; 
utilDate = ts; //多态

将java.util.Date转换为java.sql.Timestamp:

java.sql.Timestamp ts; 
java.util.Date utilDate; 
ts.setTime(utilDate.getTime());

PreparedStatement对象

  1. 特点:
    1. 预编译的SQL语句的对象
    2. 解决Statement静态拼接所产生的SQL注入问题

    3. Statement接口的子接口,可动态设置参数,允许使用不同的参数多次执行同样的SQL语句。

    4. 提高了执行速度

  2. 与Statement的不同:

    1. PreparedStatement语句中包含了警告预编译的SQL语句,拥有更高的执行效率

    2. Statement只适用于简单的SQL语句;PreparedStatement可以执行带参数的SQL语句,语句中可以包含多个用问号代表的字段,在程序中可以利用setXxx()方法设置该字段的内容,增强了程序设计的动态性

    3. 常用方法:

      1. ResultSet executeQuery(); //可以执行SQL查询并获取ResultSet对象

      2. int executeUpdate() ;//可以执行Update /Insert/Delete操作,返回值是执行该操作所影响的行数。

      3. boolean execute(); 
        //这是一个最为一般的执行方法,可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet。

事务处理

  1. setAutoCommit(boolean autoCommit):将此连接的自动提交模式设置为给定状态。
  2. commit():使所有上一次提交/回滚后进行的更改成为持久更改,并释放此 Connection 对象当前持有的所有数据库锁。
  3. collback():取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁。如果要取消事务中的操作,则可以使用ROLLBACK命令。执行该命令后,事务中的所有操作都被取消,数据库恢复到事务开始之前的状态,同时事务所占用的系统资源和数据库资源被释放。
  4. connection.rollback();//回滚事务。
  5. SavePoint sp = connection.setSavepoint(); //设置保存点
  6. connection.rollerbak(sp); //回滚到保存点
  7. connection.commit();
  8. setSavepoint():在当前事务中创建一个未命名的保存点 (savepoint),并返回表示它的新 Savepoint 对象。

  9. setSavepoint(String name) :在当前事务中创建一个具有给定名称的保存点,并返回表示它的新Savepoint 对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值