JDBC连接MySQL

JDBC-MySQL

一、介绍

JDBC(Java DataBase Connectivity java数据库连接)是JAVA官方提供的一套接口,用于连接并操作数据库。
不同的数据库厂商都提供了一套JDBC的实现类,并以jar包形式发布,用于使我们的程序可以通过这套实现类来操作其数据库,这套jar称为”驱动”。我们无需记住这些数据库提供商提供的JDBC实现类的名字,只要使用JDBC接口看待它们即可,以多态形式调用它们来操作数据库。

二、JDBC接口

1、DriverManager

DriverManager是实现类,用于加载数据库驱动,并与数据库连接连接,成功建立后产生Connection

2、Connection接口

表示与数据库的连接,负责管理事务,创建Statement实例

3、Statement接口

负责执行SQL语句

4、ResultSet接口

查询结果集

三、连接步骤

1、加载类库(驱动jar包)到JVM

mysql-connector-java 5:com.mysql.jdbc.Driver

mysql-connector-java 6以上 :com.mysql.cj.jdbc.Driver

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

2、加载驱动建立连接

2.1、useUnicode=true&characterEncoding=UTF-8作用
  • 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

  • 取数据时:在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。

2.2、useSSL表明是否使用SSL连接
  • useSSL=true:是
  • useSSL=false:否
//JDBC驱动名及数据库URL
static final String jdbc_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/test?" +
                                "userUnicode=true&" +
                                "characterEncoding=utf-8&" +
                                "useSSL=false";

//账号和密码
static final String username = "root";
static final String password = "123456";
Connection conn = DriverManager.getConnection(DB_URL, username, password);

3、创建Statement

Statement state = conn.createStatement();

4、通过Statement执行SQL语句

4.1、int executeUpdate(String sql)

专门用来执行DML语句的方法,返回值是一个整数用来表示执行了该DML语句后影响了表中多少条数据。

4.2、ResultSet executeQuery(String sql)

专门用来指定DQL语句的方法,返回值为查询结果集。

4.3、boolean execute(String sql)

所有SQL语句都可以执行,但由于DML、DQL有专门的方法,所以该方法一般用来执行DDL语句。返回值为true时说明执行后有返回值,但是若执行不是DQL语句,其他类型语句执行后返回值都是false。

String sql = "CREATE TABLE userinfo( "+
                         "  id NUMBER(6), "+
                         "  username VARCHAR2(32), "+
                         "  password VARCHAR2(32), "+
                         "  email VARCHAR2(50), "+
                         "  nickname VARCHAR2(32), "+
                         "  account NUMBER(10,2) " +
                         ")";
state.execute(sql);

5、若执行的是DQL语句,则会得到查询结果集Result,遍历该结果集得到查询内容。

6、关闭连接

conn.close();

四、注意

一、依赖版本版本

如果依赖使用6以上版本但Class.forName还是使用com.mysql.jdbc.Driver代码执行会出现如下信息

Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new 
driver class is 'com.mysql.cj.jdbc.Driver'. 
The driver is automatically registered via the SPI 
and manual loading of the driver class is generally unnecessary.

解决方法:将com.mysql.jdbc.Driver更换为com.mysql.cj.jdbc.Driver或把依赖mysql-connector-java版本降低到6以下

二、MySQL版本

MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默认要求建立SSL连接 可以通过useSSL=false禁用SSL连接,否则会出现如下警告

WARN: Establishing SSL connection without server’s identity verification is not recommended. 
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection 
must be established by default if explicit option isn’t set. 
For compliance with existing applications not using SSL the verifyServerCertificate property is set tofalse’. 
You need either to explicitly disable SSL by setting useSSL=false, 
or set useSSL=true and provide truststore for server certificate verification.

参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值