/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

JDBC简介_数据库

Java中给我们提供专门的一套技术,可以通过其中的那些类和接口操作任何的数据库,这个技术就是今天要学习的JDBC。

  1. JDBC的全称为:java database connection (java和 数据库的连接 )
  2. JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用​​Java语言​​编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

JDBC简介_java_02

JDBC简介_mysql_03

​编辑

 

JDBC的常用类和接口

JDBC有关的类:都在java.sql 和 javax.sql 包下

JDBC简介_jdbc_04

JDBC简介_数据库_05

​编辑

 

DriverManager : 数据库驱动管理类 注册驱动

Connection: 接口, 建立数据库连接的一个接口。

Statement、PreparedStatement、CallbackStatement: 向数据库发送sql,并且得到数据库的返回信息。

ResultSet: 结果集。 Statement 发送sql语句,得到的结果 封装在 ResultSet 中。

JDBC编程步骤详解 

JDBC简介_jdbc_06

JDBC简介_数据库_07

​编辑

DriverManager 驱动管理类

作用:Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接

目标:掌握Class.forName("com.mysql.jdbc.Driver"), 从哪里来的?

1、注册一个JDBC驱动程序

static void

registerDriver​​(​​Driver​​ driver)
          DriverManager​ 注册给定驱动程序。

DriverManager.registerDriver(new Driver());

注意:在实际开发中并不推荐采用registerDriver方法注册驱动。

原因:

1、对驱动API的依赖性太高。

2、驱动会注册两次。(因为mysql的驱动类Driver中已经注册一次了)

推荐方式:

// 将驱动类加载到内存中,会自动执行静态代码块中的内容

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

我们来看看com.mysql.jdbc.Driver类的源代码:

com.mysql.jdbc.Driver.java

public class Driver extends NonRegisteringDriver implements java.sql.Driver {

static {

try {

java.sql.DriverManager.registerDriver(new Driver());

} catch (SQLException E) {

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

}

}

……

}

JDBC简介_jdbc_08

com.mysql.jdbc.Driver类中的static块会创建本类对象,并注册到DriverManager中。这说明只要去加载com.mysql.jdbc.Driver类,那么就会执行这个static块,从而也就会把com.mysql.jdbc.Driver注册到DriverManager中,

所以可以把注册驱动类的代码修改为加载驱动类

2、建立数据库的连接:

static ​​Connection

getConnection​​(​​String​​ url, ​String​​ user, ​​String​​ password)​
          试图建立到给定数据库 URL 的连接。

参数详解:

url :连接到具体的数据库

user : 数据用户名

password : 数据库密码

DriverManager.getConnection("jdbc:mysql://localhost:3306/day07", "root", "123");

3、URL介绍:指定一个具体的数据库

作用:URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库

语法格式:jdbc:mysql:// localhost:3306/数据库名?key=value

JDBC简介_mysql_09

JDBC简介_mysql_10

简写形式:jdbc:mysql:///数据库名  等价于 jdbc:mysql://localhost:3306/数据库名

简写要求:必须是本地数据库,端口号必须是3306

不建议使用简写方式

常用属性:useUnicode=true&characterEncoding=UTF-8

解决问题:中文乱码异常

举例:jdbc:mysql://localhost:3306/day07?useUnicode=true&characterEncoding=utf8

 

更多了解

​https://edu.51cto.com/lecturer/14175030.html​