Java数据库连接 (Java Database connect)

1. JDBC入门

1.1 客户端操作来访问MySQL数据库的方式:

(1)使用第三方客户端来访问 MySQLSQLyogNavicatSQLWaveMyDB StudioEMS SQL Manager for MySQL
(2)使用MySQL自带命令行方式访问
(3)通过 Java 来访问 MySQL 数据库

1.2 什么是JDBC

JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。

JDBCJava 访问数据库的标准规范,具体操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动,数据库驱动由数据库厂商提供。

在这里插入图片描述

1.3 使用 JDBC 开发使用到的包

使用到的包说明
java.sql所有与 JDBC 访问数据库相关的接口和类
javax.sql数据库扩展包,提供数据库额外的功能。如:连接池
数据库的驱动由各大数据库厂商提供,需要额外下载,是对 JDBC 接口实现的类

1.4 JDBC 的核心 API

接口或类作用
DriverManager 类管理和注册数据库驱动;得到数据库连接对象
Connection 接口一个连接对象,可用于创建 Statement 和 PreparedStatement 对象
Statement 接口一个 SQL 语句对象,用于将 SQL 语句发送给数据库服务器
PreparedStatemen 接口一个 SQL 语句对象,是 Statement 的子接口
ResultSet 接口用于封装数据库查询的结果集,返回给客户端 Java 程序

2.Java MySQL连接

2.1.查看MySQL安装版本

使用快捷键win+r打开命令提示符,输入mysql --version查看MySQL版本。
在这里插入图片描述

2.2 下载对应的驱动jar包

Java 连接 MySQL 需要驱动包,下载地址如下:
https://downloads.mysql.com/archives/c-j/
在这里插入图片描述

2.3 为项目添加驱动依赖

选择对应版本进行下载后进行解压。
在这里插入图片描述
将得到的jar包文件导入对应的项目的lib库中。
在这里插入图片描述
将驱动jar包添加项目库依赖
在这里插入图片描述

2.4 创建测试数据

在 MySQL 中创建 JDBC 数据库,并创建 websites 数据表,表结构如下。

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

在这里插入图片描述

插入一些数据,相应的SQL语句如下:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'),
                              ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'),
                              ('3', '微博', 'https://weibo.com/', '20', 'CN'),
                              ('4', 'Facebook', 'https://www.facebook.com/', '3', 'USA'),
                              ('5', '腾讯', 'https://www.qq.com/', '9', 'CN');

数据表显示如下。
在这里插入图片描述

2.5 连接MySQL数据库

在这里插入图片描述
以下实例使用了 JDBC 连接 MySQL 数据库,一些数据如用户名、密码等,需要根据开发环境来配置。

package com.itheima;

import java.sql.*;

public class jdbcdemo {

    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    // static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    // static final String DB_URL = "jdbc:mysql://localhost:3306/jdbc";

    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/jdbc?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "";
    static final String PASS = "";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while (rs.next()) {
                // 通过字段检索
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");

                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 站点名称: " + name);
                System.out.print(", 站点 URL: " + url);
                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 处理 JDBC 错误
            se.printStackTrace();
        } catch (Exception e) {
            // 处理 Class.forName 错误
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException se2) {
            } // 什么都不做
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}

以上实例执行输出结果如下。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值