1.
JDBC
入门1.1 客户端操作来访问
MySQL
数据库的方式:(1)使用第三方客户端来访问
MySQL
:SQLyog
、Navicat
、SQLWave
、MyDB Studio
、EMS SQL Manager for MySQL
(2)使用MySQL
自带命令行方式访问
(3)通过Java
来访问MySQL
数据库1.2 什么是
JDBC
JDBC API
是一个Java API
,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC
代表Java
数据库连接。
JDBC
是Java
访问数据库的标准规范,具体操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动,数据库驱动由数据库厂商提供。
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!");
}
}
以上实例执行输出结果如下。