JDBC(Java DataBase Connectivity)

简介:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。也可以通过名字中得知通俗的说:jdbc就是java数据库连接。

sun公司为了简化开发人员的(对数据库的统一驱动)操作,提供了java操作数据库的规范,简称:JDBC

**自从有了JDBC驱动后,向各种关系数据发送SQL语句就是一件很容易的事。**有了JDBC API,就不必为访问mysql数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问SQLserver数据库又编写另一个程序等等。

程序员只需用JDBC API写一个程序就够了。它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言中所说的"编写一次,处处运行"的效果。

通过下图了解:

mysql 和 mysql odbc 对应关系 mysql与jdbc_java

需要jar的支持

<dependencies>
        <dependency>
<!--  导入数据库依赖-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
</dependencies>

环境的搭建

  1. 配置信息:固定写法(jdbc:mysql😕/localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8);
  2. jdbc:连接的数据库(例如:mysql、Oracle)//本地地址:连接数据库的端口号(默认3306)/数据库的名称?useUnicode=true&characterEncoding=UTF-8—>解决中文乱码问题
  3. 加载驱动
  4. 连接数据库
  5. 向数据库发送SQL的对象statement:进行增删改查(CRUD)
  6. 编写SQL(业务不同,处理不同的SQL语句)
  7. 执行SQL
  8. 关闭连接

idea实现的数据库连接实现类:

package com.yang.jdbc;

import java.sql.*;

/**
 * @Author Miracle yqf
 * @Version 2020
 */
public class TestJdbc {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //配置信息
        String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8";
        String username = "root";
        String password = "123456";
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //3.向数据库发送SQL的对象statement:进行增删改查(CRUD)
        Statement statement = connection.createStatement();
        //4.编写SQL
        String sql = "select * from users";
        //5.执行查询SQL,返回一个resultSet:结果集
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("id"+resultSet.getObject("id"));
            System.out.println("name"+resultSet.getObject("name"));
            System.out.println("password"+resultSet.getObject("password"));
            System.out.println("email"+resultSet.getObject("email"));
            System.out.println("birthday"+resultSet.getObject("birthday"));
        }
        //6.关闭连接,释放资源,先开后关
        resultSet.close();
        statement.close();
        connection.close();
    }
}

idea数据库连接的安全模式:对象PreparedStatement,防止mysql的注入漏洞。

package com.yang.jdbc;

import java.sql.*;

/**
 * @Author Miracle yqf
 * @Version 2020
 */
public class TestJdbc2 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //配置信息
        String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8";
        String username = "root";
        String password = "123456";
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //3.编写SQL,插入一条数据
        String sql = "insert into users(id, name, password, email, birthday) VALUE (?,?,?,?,?);";
        //4.预编写
        PreparedStatement preparedstatement = connection.prepareStatement(sql);
        preparedstatement.setInt(1,4);
        preparedstatement.setString(2,"java学");
        preparedstatement.setString( "2021-04-05");
        //5.执行SQL
        int i = preparedstatement.executeUpdate();
        if (i>0){
            System.out.println("插入成功!");
        }
        //6.关闭连接
        preparedstatement.close();
        connection.close();
    }

}