db_Driver Manager

JDBC

Java Database Connectivity 是一个独立于特定数据库的管理系统,通用的 SQL 数据库存取和操作的公共接口。

定义一组标准,为访问不同数据库提供了统一途径。

JDBC API

提供者:Java 官方

内容:供开发者调用的接口

java.sql 或者 javax.sql 包中

  • DriverManager 类:管理数据库驱动

  • Connection 接口:连接数据库

  • Statement 接口:执行 SQL

  • ResultSet 接口:封装结果集

Driver Manager

提供者:Java 官方

作用:为不同的数据库产品提供统一的接入标准。

JDBC 驱动

提供者:数据库厂商

作用:让 Java 完成与特定数据库的对接。

使用 JDBC 原理

1、加载数据库驱动,Java Application 和 数据库的桥梁。

2、获取 Connection,一次连接。

3、通过 Connection 对象产生 Statement,执行 SQL 语句。

4、ResultSet 保存 Statment 执行后所产生的结果。

package com.m.jdbc;

import com.m.jdbc.util.JDBCTools;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {
    public static void main(String[] args) {
        findAll();
    }

    /**
     * i=0是新增,i=1是修改,i=2的删除
     * @param i
     */
    public static void saveOrUpdateOrDelete(int i){
        Connection connection = JDBCTools.getConnection();
        //3、定义 SQL
        String sql = null;
        switch (i){
            case 0:
                sql = "insert into student(name) values('张三')";
                break;
            case 1:
                sql = "update student set name = '杨三' where id = 1";
                break;
            case 2:
                sql = "delete from student where id = 2";
                break;
        }
        Statement statement = null;
        try {
            statement = connection.createStatement();
            int result = statement.executeUpdate(sql);
            System.out.println(result);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCTools.release(connection,statement,null);
        }
    }

    public static void findAll(){
        Connection connection = JDBCTools.getConnection();
        String sql = "select * from student";
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            System.out.println(resultSet.next());
            while(resultSet.next()){
                int id = resultSet.getInt(1);
                String name = resultSet.getString(2);
                System.out.println(id+"-"+name);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCTools.release(connection,statement,resultSet);
        }

    }

}

JDBCTools工具类

package com.m.jdbc.util;

import java.sql.*;

public class JDBCTools {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";
        String user = "root";
        String password = "root";
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static void release(Connection connection, Statement statement, ResultSet resultSet){
        try {
            if(connection!=null){
                connection.close();
            }
            if(statement!=null){
                statement.close();
            }
            if(resultSet!=null){
                resultSet.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

Statement 的方法,Statement 是通过 Connection 产生的,是用来执行 SQL 语句的,常用的方法:

  • ResultSet executeQuery(String sql) 用来执行查询操作。

  • int executeUpdate(String sql) 用来执行新增,修改,删除操作。

  • boolean execute(String sql) 可以执行任意的 CRUD 操作。

true 表示返回结果是 ResultSet,执行的是查询操作。

false 表示返回结果不是 ResultSet,执行的是新增、修改、删除操作。






备注:最近来手感,写了个类似Tomcat服务

github地址:https://github.com/cnamep001/my_tomcat.git






原文地址:https://www.cnblogs.com/k-class/p/13660726.html