MAC 中使用JDBC连接MySQL

  1. JDBC 全称是 JAVA DataBase Connectivity(JAVA 语言连接数据库)
  2. JDBC 的本质是一套接口,面向接口调用,面向接口写实现类

面向接口编程:是为了解耦合,提高程序的扩展力
(多态机制就是非常经典的:面向抽象编程)

JDBC 编程六步:

  1. 注册驱动(告诉 JAVA,即将要连接的是哪个品牌的数据库)
  2. 获取连接(表示 JVM的进程喝数据库进程之间的通道打开了,属于进程之间的通信,使用完了要关闭)
  3. 获取数据库操作对象
  4. 执行 SQL 语句
  5. 处理查询结果(只有上一步执行的是 select 语句的时候,才有结果)
  6. 释放资源(因为 JAVA 喝数据库属于进程间的通信,开启后要关闭)

这是配置文件:

DB_url=jdbc:mysql://localhost:3306/dbtest
username=root
password=rootroot
driver=com.mysql.cj.jdbc.Driver

步骤:

public class DBConnection {
    public static void main(String[] args) {
        //使用资源绑定器,绑定配置文件
        ResourceBundle bundle = ResourceBundle.getBundle("jdbctest");
        String driver = bundle.getString("driver");
        String url = bundle.getString("DB_url");
        String username = bundle.getString("username");
        String password = bundle.getString("password");

        Statement statement = null;
        ResultSet resultSet = null;
        Connection connection = null;

        try {
            //1.注册JDBC驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取数据库连接
            connection = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接对象=" + connection);
            //3.对数据库操作
            //Statement 专门执行 sql 语句的
            statement = connection.createStatement();//获取操作数据库的对象
            String sql = "select * from bookinfo";//执行 sql
            resultSet = statement.executeQuery(sql);//执行数据库语句获取结果集
            //int executeUpdate(insert/delete/update)

            while (resultSet.next()) {
                int bookid = resultSet.getInt("book_id");
                String bookname = resultSet.getNString("booK_name");
                BigDecimal price = resultSet.getBigDecimal("price");
                Date publicdate = resultSet.getDate("public_date");
                int store = resultSet.getInt("store");

                System.out.println("图书编号" + bookid);
                System.out.println("图书名" + bookname);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        catch (SQLException e){
            e.printStackTrace();
        }
        finally {
            //4.关闭结果集,数据库操作对象,数据库连接
            try {
                if (statement != null) {
                    statement.close();
            }
            }catch (SQLException e){
                e.printStackTrace();
            }

            try {
                if (connection != null) {
                    connection.close();
                }
            }catch (SQLException e){
                e.printStackTrace();
            }

            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
}

url:统一资源定位符(网络中某个资源的绝对路径)
包括:协议、IP、PORT、资源名

上一篇:★【LeetCode刷题记录】 - 最大子序和


下一篇:书籍管理系统登录注册页面