jdbc mysql url写法_MySQL第04篇:JDBC

这篇博客全面介绍了Java数据库连接(JDBC)的使用,从JDBC概述、DriverManager类、Connection和Statement接口,到PreparedStatement和事务处理,再到数据库连接池C3P0和Druid,最后涉及Spring JDBC的使用。内容覆盖了JDBC的基本操作、最佳实践及性能优化技术。
摘要由CSDN通过智能技术生成

核心概述:在实际开发中,我们需要通过Java程序来操作数据库,此时Java给我们提供了Java访问数据库的标准规范就是JDBC,我们可以通过调用JDBC接口中的方法实现操作数据库。d35b264340cbeabef349af7540aeaa89.png

  • 第一章:JDBC快速入门

    • 1.1-客户端操作MySQL的方式

    • 1.2-JDBC概述

    • 1.3-JDBC核心API

    • 1.4-导入驱动jar包

    • 1.5-加载和注册驱动

  • 第二章:DriverManager类

    • 2.1-DriverManager作用

    • 2.2-类中的方法

    • 2.3-连接数据库的四个参数

    • 2.4-连接数据库URL

    • 2.5-代码演示

  • 第三章:Connection接口

  • 第四章:Statement 接口

    • 4.1-JDBC访问数据库的步骤

    • 4.2-Statement 作用

    • 4.3-Statement 中的方法

    • 4.4-释放资源

    • 4.5-执行DDL

    • 4.6-执行DML

    • 4.7-执行DQL

  • 第五章:数据库工具类 JdbcUtils

  • 第六章:用户登录案例

    • 6.1-需求

    • 6.2-步骤

    • 6.3-SQL 注入问题

  • 第七章:PreparedStatement 接口

    • 7.1-继承结构与作用

    • 7.2-PreparedSatement 的执行原理

    • 7.3-PreparedStatement 对象

    • 7.4-使用 PreparedStatement 的步骤

    • 7.5-表与类的关系

    • 7.6-PreparedStatement 执行 DML 操作

  • 第八章:JDBC处理事务

    • 8.1-准备数据

    • 8.2-API介绍

    • 8.3-开发步骤

  • 第九章:数据库连接池

    • 9.1-为什么要学习数据库连接池

    • 9.2-什么是数据库连接池

    • 9.3-如何使用数据库连接池

    • 9.4-C3P0

    • 9.5-Druid

    • 9.6-DruidUtils

  • 第十章:Spring JDBC

    • 10.1-概述

    • 10.2-使用Spring JDBC

第一章:JDBC快速入门

1.1-客户端操作MySQL的方式

01-使用第三方客户端来访问 MySQL:SQLyog、Navicat、SQLWave、MyDB Studio、EMS SQL Manager for MySQL 。89ab7cf6957e44460d163c8ec9b58e74.png

02-使用 MySQL 自带的命令行方式 。

03-通过 Java 来访问 MySQL 数据库,本篇要讲解的内容

1.2-JDBC概述

什么是JDBC

JDBC (Java Database Connectivity,简称JDBC )是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个 数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用 JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。

JDBC的好处

01-程序员如果要开发访问数据库的程序,只需要会调用 JDBC 接口中的方法即可,不用关注类是如何实现的。

02-使用同一套 Java 代码,进行少量的修改就可以访问其他 JDBC 支持的数据库 。

82816204e6887fd3118e95a19682d531.png

使用 JDBC 开发使用到的包

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

1.3-JDBC核心API

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

1.4-导入驱动jar包

下载

链接:https://pan.baidu.com/s/1igjB1mTP7GBLBAZGP_bsGA
提取码:v72g

导入步骤

812007232a53173ff634f3ae6a6075a1.png

1.5-加载和注册驱动

加载方法

加载和注册驱动的方法 描述
Class.forName(数据库驱动实现类) 加载和注册数据库驱动,数据库驱动由 mysql 厂商”com.mysql.jdbc.Driver”

具体实现

public class Demo1 {

public static void main(String[] args) throws ClassNotFoundException {

//抛出类找不到的异常,注册数据库驱动

Class.forName("com.mysql.jdbc.Driver");

}

}

疑问:为什么这样可以注册驱动?

public class Driver implements java.sql.Driver {

public Driver() throws SQLException {

}

static {

try {

DriverManager.registerDriver(new Driver()); //注册数据库驱动

} catch (SQLException var1) {

throw new RuntimeException("Can't register driver!");

}

}

}

com.mysql.jdbc.Driver 源代码:

Driver 接口,所有数据库厂商必须实现的接口,表示这是一个驱动类。

注意事项

从 JDBC3 开始,目前已经普遍使用的版本。可以不用注册驱动而直接使用。Class.forName 这句话可以省略。

为了向下兼容,建议不要省略。

第二章:DriverManager类

2.1-DriverManager作用

  1. 管理和注册驱动

  2. 创建数据库的连接

2.2-类中的方法

DriverManager 类中的静态方法 描述
Connection getConnection (String url, String user, String password) 通过连接字符串,用户名,密码来得到数据库的连接对象
Connection getConnection (String url, Properties info) 通过连接字符串,属性对象来得到连接对象

2.3-连接数据库的四个参数

参数 说明
用户名 登录的用户名
密码 登录的密码
连接字符串 URL 不同的数据库 URL 是不同的
mysql 的写法jdbc:mysql://localhost:3306/数据库[?参数名=参数值]
驱动类的字符串名 com.mysql.jdbc.Driver

2.4-连接数据库URL

格式

协议名:子协议://服务器名或 IP 地址:端口号/数据库名?参数=参数值

MySQL格式

845a00fcecf1e4eb7cf3724e514171b4.png

MySQL简写格式

前提:必须是本地服务器,端口号是 3306 。

简写格式:jdbc:mysql:///数据库名

乱码的处理

如果数据库出现乱码,可以指定参数: ?characterEncoding=utf8,表示让数据库以 UTF-8 编码来处理数据。

jdbc:mysql://localhost:3306/数据库?characterEncoding=utf8

2.5-代码演示

方式1:使用用户名、密码、URL 得到连接对象

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

/**

* 得到连接对象

*/

public class Demo2 {

public static void main(String[] args) throws SQLException {

String url = "jdbc:mysql://localhost:3306/db3";

//1) 使用用户名、密码、URL 得到连接对象

Connection connection = DriverManager.getConnection(url, "root", "root");

//com.mysql.jdbc.JDBC4Connection@68de145

System.out.println(connection);

}

}

方式2:使用属性文件和 url 得到连接对象

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

public class Demo3 {

public static void main(String[] args) throws SQLException {

//url 连接字符串

String url = "jdbc:mysql://localhost:3306/db3";

//属性对象

Properties info = new Properties();

//把用户名和密码放在 info 对象中

info.setProperty("user","root");

info.setProperty("password","root");

Connection connection = DriverManager.getConnection(url, info);

//com.mysql.jdbc.JDBC4Connection@68de145

System.out.println(connection);

}

}

第三章:Connection接口

作用

Connection 接口,具体的实现类由数据库的厂商实现,代表一个连接对象。

方法

方法 描述
Statement createStatement() 创建一条 SQL 语句对象

第四章:Statement 接口

4.1-JDBC访问数据库的步骤

c558bceff4f6cb27e7f05235bb6c254f.png

  1. 注册和加载驱动(可以省略)

  2. 获取连接

  3. Connection Statement 对象

  4. 使用 Statement 对象执行 SQL 语句

  5. 返回结果集

  6. 释放资源

4.2-Statement 作用

代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结果的对象。

4.3-Statement 中的方法

Statement 接口中的方法 描述
int executeUpdate(String sql) 用于发送 DML 语句,增删改的操作(insert、update、delete) 参数:SQL 语句 返回值:返回对数据库影响的行数
ResultSet executeQuery(String sql) 用于发送 DQL 语句,执行查询的操作。select 参数:SQL 语句 返回值:查询的结果集

4.4-释放资源

  1. 需要释放的对象:ResultSet 结果集,Statement 语句,Connection 连接

  2. 释放原则:先开的后关,后开的先关。ResultSet →Statement →Connection

  3. 放在哪个代码块中:finally 块

4.5-执行DDL

需求:使用 JDBC 在 MySQL 的数据库中创建一张学生表

3d47e93873947ffd2930a763afb54988.png

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

/**

* 创建一张学生表

*/

public class Demo4DDL {

public static void main(String[] args) {

//1. 创建连接

Connection conn = null;

Statement statement = null;

try {

conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");

//2. 通过连接对象得到语句对象

statement = conn.createStatement();

//3. 通过语句对象发送 SQL 语句给服务器

//4. 执行 SQL

statement.executeUpdate("create table student (id int PRIMARY key auto_increment, " +

"name varchar(20) not null, gender boolean, birthday date)");

//5. 返回影响行数(DDL 没有返回值)

System.out.println("创建表成功");

} catch (SQLException e) {

e.printStackTrace();

}

//6. 释放资源

finally {

//关闭之前要先判断

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (SQLException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值