JDBC预习

JDBC

一、概述

1.简述

Java Data Base Connectivity(Java数据库连接),它是Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API,根本上说JDBC是一种规范,它提供的接口,一套完整的,允许便捷式访问底层数据库。可以用JAVA来写不同类型的可执行文件:JAVA应用程序、JAVA Applets、Java Servlet、JSP等,不同的可执行文件都能通过JDBC访问数据库,又兼备存储的优势。简单说它就是JAVA与数据库的连接的桥梁或者插件,用JAVA代码就能操作数据库的增删改查、存储过程、事务等。

2.工作原理图

在这里插入图片描述

二、JDBC使用步骤

1.初始化驱动

  1. 导入需要操作的数据库jdbc驱动包
    在这里插入图片描述
  2. 初始化驱动类com.mysql.jdbc.Driver
class TestJDBC{
   public static void main(String[] args) {

       //初始化驱动
       try {
       Class.forName("com.mysql.jdbc.Driver");
       System.out.println("数据库驱动加载成功 !");
         } catch (ClassNotFoundException e) {

           e.printStackTrace();
       }

   }
}

2.建立JDBC和数据库之间的Connection连接

        // 这里需要提供:
        // 数据库所处于的ip:127.0.0.1 (本机)
        // 数据库的端口号: 3306 (mysql专用端口号)
        // 数据库名称 zzyyp
        // 编码方式 UTF-8
        // 账号 root
        // 密码。。。。。。
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

 class TestJDBC {
    public static void main(String[] args) {

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

           

            Connection c = DriverManager.getConnection(
                            "jdbc:mysql://127.0.0.1:3306/zzyyp?characterEncoding=UTF-8",
                            "root", "密码");

            System.out.println("连接成功,获取连接对象: " + c);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        } catch (SQLException e) {

            e.printStackTrace();
        }

    }
}

3.创建Statement或者PreparedStatement接口,执行SQL语句

作用

  1. Statement:用于执行SQL语句的工具接口。该对象及可以执行DDL/DCL语句,也可以用于执行DML语句,还可以用于执行SQL查询,返回查询到的结果集。常用方法如下:
    a. ResultSet executeQuery(String sql)throws SQLException:该方法用户执行查询语句,并返回查询结果对应的ResultSet对像。该方法只能用于执行查询语句。
    b. int executeUpdate(String sql)throws SQLException:该方法用于执行DML语句,并返回受影响的行数;该方法也可以用于执行DDL语句,执行DDl语句将返回为0;
    c. boolean execute(String sql)throws SQLException:该方法可以执行任何SQL语句。如果执行后第一个结果为ResultSet对象,则返回TRUE;如果执行后第一个结果为受影响的行 数或者没有任何结果,则返回false;

  2. PreparedStatement:同样有executeUpdate() executeQuery() execute()三个方法,只是这个三个方法无需接收SQL字符串,因为PrepareStatement对象已经与变异了SQL命令,只要为这些命令传入参数即可。
    在这里插入图片描述

           // 准备sql语句
           
           String sql = " ******** " 
            s.execute(sql);
  
            System.out.println("success");

差异

  • Statement接口在创建语句对象时,不带参数,进行查询更新操作时,再传入完整的SQL 语句。而PreparedStatement接口创建预处理语句对象时,传入带SQL语句,进行查询更新操作时,不带参数。
  • PreparedStatement接口代码可读性高,无需拼接SQL语句,语句和代码分离。
  • PreparedStatement接口执行效率高,它预编译和缓存了结构相同的SQL语句,想String常量池。
  • PreparedStatement接口安全性更高,避免了产生SQL漏洞注入。

4.处理和显示结果

ResultSet executeQuery(String sql)

5.释放资源

数据库的连接是有限资源,先关闭Statement,后关闭Connection.

 finally {
            
            // 先关闭Statement
            if (s != null)
                try {
                    s.close();
                } catch (SQLException e) {
                  
                    e.printStackTrace();
                }
            // 后关闭Connection
            if (c != null)
                try {
                    c.close();
                } catch (SQLException e) {
                   
                    e.printStackTrace();
                }

三、JDBC事务

1.事务概念

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

2.事务的特性

  • 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。

  • 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

  • 隔离性(isolation):一个事务的执行不能被其他事务所影响。

  • 持久性(durability):一个事务一旦提交,事物的操作便永久性的保存在DB中。即使此时再执行回滚操作也不能撤消所做的更改。

3.JDBC事务使用

conn.setAutoCommit(0);//修改系统非自动提交。
 
conn.commit();//事务提交
 
conn.rollback();//事务回滚
 
SavePoint sp=con.setSavePoint();//设置保存点
 
conn.rollback(sp);//返回保存点
 
conn.setTransactionIsolation();//设置隔离级别
 
conn.getTransactionIsolation();//获取隔离级别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值