JavaWeb整体介绍与JDBC(1)

JavaWeb整体介绍

JavaWeb整体介绍与JDBC(1)_第1张图片

JavaWeb整体介绍与JDBC(1)_第2张图片

JDBC(1)

重要目标

1、掌握JDBC的的CRUD
2、理解JDBC中各个对象的作用
3、掌握Druid的使用

在开发中我们使用的是java语言,那么势必要通过java语言操作数
据库中的数据。

JDBC概念

JavaWeb整体介绍与JDBC(1)_第3张图片

我们开发的同一套Java代码是无法操作不同的关系型数据库,因为每一个关系型数据库的底层实现细节都不一样。如果这样,问题就很大了,在公司中可以在开发阶段使用的是MySQL数据库,而上线时公司最终选用oracle数据库,我们就需要对代码进行大批量修改,这显然并不是我们想看到的。我们要做到的是同一套Java代码操作不同的关系型数据库,而此时sun公司就指定了一套标准接口(JDBC),JDBC中定义了所有操作关系型数据库的规则。众所周知接口是无法直接使用的,我们需要使用接口的实现类,而这套实现类(称之为:驱动)就由各自的数据库厂商给出。

本质

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

JavaWeb整体介绍与JDBC(1)_第4张图片

JDBC快速入门

JavaWeb整体介绍与JDBC(1)_第5张图片

编写代码步骤

JavaWeb整体介绍与JDBC(1)_第6张图片
JavaWeb整体介绍与JDBC(1)_第7张图片

具体操作

创建新的空的项目

JavaWeb整体介绍与JDBC(1)_第8张图片

定义项目的名称,并指定位置

JavaWeb整体介绍与JDBC(1)_第9张图片

对项目进行设置,JDK版本、编译版本

JavaWeb整体介绍与JDBC(1)_第10张图片

创建模块,指定模块的名称及位置

JavaWeb整体介绍与JDBC(1)_第11张图片

导入驱动包
将mysql的驱动包放在模块下的lib目录(随意命名)下,并将该jar包添加为库文件

JavaWeb整体介绍与JDBC(1)_第12张图片

在添加为库文件的时候,有如下三个选项,
Global Library : 全局有效
Project Library : 项目有效
Module Library : 模块有效

JavaWeb整体介绍与JDBC(1)_第13张图片

在src下创建类

JavaWeb整体介绍与JDBC(1)_第14张图片

编写代码如下

/**
* JDBC快速入门
*/
public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1. 注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/db1";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql = "update account set money = 2000 where id = 1";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);//受影响的行数
        //6. 处理结果
        System.out.println(count);
        //7. 释放资源
        stmt.close();
        conn.close();
   }
}

JDBC API详解(1)

DriverManager

DriverManager(驱动管理类)作用

注册驱动

JavaWeb整体介绍与JDBC(1)_第15张图片

JavaWeb整体介绍与JDBC(1)_第16张图片

获取数据库连接

JavaWeb整体介绍与JDBC(1)_第17张图片
JavaWeb整体介绍与JDBC(1)_第18张图片

Connection

Connection(数据库连接对象)作用:
1、获取执行 SQL 的对象
2、管理事务

获取执行对象

JavaWeb整体介绍与JDBC(1)_第19张图片

事务管理

JavaWeb整体介绍与JDBC(1)_第20张图片

JavaWeb整体介绍与JDBC(1)_第21张图片

JavaWeb整体介绍与JDBC(1)_第22张图片

实现代码

/**
* JDBC API 详解:Connection
*/
public class JDBCDemo3_Connection {
   public static void main(String[] args) throws Exception {
       //1. 注册驱动
       //Class.forName("com.mysql.jdbc.Driver");
       //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
       String url = "jdbc:mysql:///db1?useSSL=false";
       String username = "root";
       String password = "1234";
       Connection conn = DriverManager.getConnection(url, username, password);
       //3. 定义sql
       String sql1 = "update account set money = 3000 where id = 1";
       String sql2 = "update account set money = 3000 where id = 2";
       //4. 获取执行sql的对象 Statement
       Statement stmt = conn.createStatement();
       try {
           // ============开启事务==========
           conn.setAutoCommit(false);
           //5. 执行sql
            int count1 = stmt.executeUpdate(sql1);//受影响的行数
           //6. 处理结果
           System.out.println(count1);
            int i = 3/0;
           //5. 执行sql
            int count2 = stmt.executeUpdate(sql2);//受影响的行数
           //6. 处理结果
           System.out.println(count2);
           // ============提交事务==========
           //程序运行到此处,说明没有出现任何问题,则需求提交事务
           conn.commit();
       } catch (Exception e) {
           // ============回滚事务==========
           //程序在出现异常时会执行到这个地方,此时就需要回滚事务
           conn.rollback();
           e.printStackTrace();
       }
       //7. 释放资源
       stmt.close();
       conn.close();
   }
}

Statement

概述
Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。

JavaWeb整体介绍与JDBC(1)_第23张图片

代码实现

执行DML语句

/**
  * 执行DML语句
  * @throws Exception
  */
@Test
public void testDML() throws  Exception {
    //1. 注册驱动
    //Class.forName("com.mysql.jdbc.Driver");
    //2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写
    String url = "jdbc:mysql:///db1?useSSL=false";
    String username = "root";
    String password = "1234";
    Connection conn =DriverManager.getConnection(url, username, password);
    //3. 定义sql
    String sql = "update account set money = 3000 where id = 1";
    //4. 获取执行sql的对象 Statement
    Statement stmt = conn.createStatement();
    //5. 执行sql
    int count = stmt.executeUpdate(sql);//执行完DML语句,受影响的行数
    //6. 处理结果
    //System.out.println(count);
    if(count > 0){
        System.out.println("修改成功~");
   }else{
        System.out.println("修改失败~");
   }
    //7. 释放资源
    stmt.close();
    conn.close();
}

执行DDL语句

/**
  * 执行DDL语句
  * @throws Exception
  */
@Test
public void testDDL() throws  Exception {
    //1. 注册驱动
    //Class.forName("com.mysql.jdbc.Driver");
    //2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写
    String url = "jdbc:mysql:///db1?useSSL=false";
    String username = "root";
    String password = "1234";
    Connection conn = DriverManager.getConnection(url, username, password);
    //3. 定义sql
    String sql = "drop database db2";
    //4. 获取执行sql的对象 Statement
    Statement stmt = conn.createStatement();
    //5. 执行sql
    int count = stmt.executeUpdate(sql);//执行完DDL语句,可能是0
    //6. 处理结果
    System.out.println(count);
    //7. 释放资源
    stmt.close();
    conn.close();
}

注意:
以后开发很少使用java代码操作DDL语句

你可能感兴趣的:(JavaWeb,数据库,java,web,后端)