Java连接MySQL简单步骤及常见问题解析
这篇文章跟读者们介绍Java语言如何连接到MySQL数据库相关操作,及FAQ(Frequently Asked Questions)介绍。
选择工具和准备数据集
IDE:Eclipse
数据库:使用的是MySQL 8.0
驱动程序包:mysql-connector-java-8.0.12.jar
驱动程序类名:com.mysql.cj.jdbc.Driver
提前准备工作:笔者使用MySQL Workbench 工具来进行数据库CRUD各种操作,在数据库中建立了一个test数据库,接着在test数据库中建立teacher表格和往向表格中增加数据。
并且已经往表中插入了6项数据。
在Eclipse中建立一个数据库操作的Java project。并且在project里面引入(配置)驱动程序jar包
主要步骤
1.导入所需要的包
2.注册JDBC驱动
3.建立连接到数据库
4.执行 CRUD 操作
5.处理得到的结果
6.关闭资源,释放连接
提供源代码参考:
//STEP 1:导入包
//大多数情况下,使用import java.sql.*;就足够了。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DBConnettion { //不同版本的数据库驱动,名字会不相同同。
//数据库驱动 mysql-connector-java 6.0以上的版本, 驱动名是:"com.mysql.cj.jdbc.Driver"
//旧版本驱动名是:"com.mysql.jdbc.Driver"
private static final String JDBC_DEIVER = "com.mysql.cj.jdbc.Driver";
//笔者查看本机数据库进程,默认使用3306端口,大家根据自己数据库进程端口号来相应修改。
//比如我要访问MySQL的test数据库, 主机ip:端口号/数据库名称 数据库URL格式:---"jdbc:mysql://localhost:3306/test
private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false";//?useUnicode=true&characterEncoding=utf8&useSSL=false
private static final String USER = "****"; //"****"替换成自己的数据库用户名
private static final String PASS = "****"; //"****"替换成自己的数据库密码 public static void main(String[] args) {
Connection conn = null;
Statement stmt = null; try {
//STEP 2:注册 JDBC 驱动
Class.forName(JDBC_DEIVER); //STEP 3:建立连接到数据库
System.out.println("正在连接数据库......");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement(); //STEP 4:执行 CRUD 操作
System.out.println("正在查询数据:");
String sql = "select * from teacher;";
ResultSet rs = stmt.executeQuery(sql); //STEP 5:处理得到结果
System.out.println("Department ID Name");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
if (!rs.isLast())
System.out.println("\t " + id + " " + name);
else
System.out.println( " " + id + " " + name);
} //STEP 6:关闭资源,释放连接。
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("释放数据库连接......");
}
}
运行结果:
常见问题解析及解决方法
出现问题:
java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解析:
从错误提示可知道是时区的错误,因此只要将数据库系统的时区设置为你当前系统时区即可。
解决方法:
因此使用root用户登录mysql,按照如下图所示操作即可。
查看数MySQL据库系统的时区设置
show variables like '%time_zone%';
笔者电脑系统时区设置为GMT+8:北京时间。而数据库系统时区默认为GMT+0(格林尼治时间),因此修改数据库系统时区跟我的系统时区相互一致。
set global time_zone = '+8:00';
对数据库系统时区变量做修改,不会立即发生改变。退出本次黑窗命令行(客户端)后
重新登录数据库,再次进行数据库系统时区查询,发现已经做出更改。
show variables like '%time_zone%';
出现问题:
Sat May 04 19:01:08 CST 2019 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 to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
解析:
从MySQL数据库 5.5.45+ 以后,对数据库的访问都要求建立SSL加密连接。我们只是做一个简单的数据库访问实例,因此访问数据库不进行SSL加密连接。
解决方法:
可以在数据库URL连接语句末尾加上"?useSSL=false"来取消数据库的警告。
或者可以给数据库服务器提供证书验证的信任库,进行SSL加密连接。
Java连接MySQL简单步骤及常见问题解析的更多相关文章
- 【JDBC】java连接MySQL数据库步骤
java连接数据库步骤 1. 加载驱动 Class.forName("com.mysql.java.Driver"); 或: registerDriver(new com.mysq ...
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
- JAVA使用jdbc连接MYSQL简单示例
以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能
主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十 ...
- 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- java连接mysql
Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件 ...
- 转载:Java连接MySQL 数据库的正确操作流程
转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html 以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...
随机推荐
- java @postconstruct初始化注解使用
1.从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion):@PostConstruct和@PreDestroy.这两个注解被用来修饰一个非静态的 ...
- 『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
0 序篇 2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本. 2017年02月,Tensorflow正式发布了1.0.0版本,同时也标志 ...
- 什么是VR中的Locomotion?
Locomotion,本文中我称之为移位,是VR研究中最重要的话题之一.因为它属于VR中三大元老级操作(Selection选择,Manipulation操纵物体,Locomotion移位),其中,前两 ...
- C语言复习————基本数据类型、运算符和表达式
数据类型/运算符/表达式 主要分两部分介绍,第一部分介绍常用的数据类型,例如:常量和变量/整型/实型/字符型:第二部分介绍算数运算符和算数表达式以及赋值运算符和逗号运算符. 一. 常用的数据类型 1. ...
- centos7.x 部署主、从DNS服务器
1.准备 例:两台192.168.219.146(主), 192.168.219.147(从), 域名www.panyangduola.com 主.从DNS服务器均需要安装bind.bind-chro ...
- FFmpeg(六) 播放视频之GLSurfaceView显示RGB数据
一.播放视频说明 1.两种方式播放视频 ①shader播放YUV,后面再介绍. ②RGB直接显示数据,简单.性能差,用到FFmpeg的格式转换,没有shader效率高.本文介绍这个方式. 2.GLSu ...
- poll(2) 源码分析
poll(2) poll(2) 系统调用的功能和 select(2) 类似:等待一个文件集合中的文件描述符就绪进行I/O操作. 使用 实现 select(2) 的局限性: 关注的文件描述符集合大小最大 ...
- 经典面试题golang实现方式(一)
以下所有题目的关键信息都会用[]括起来,我们不对题目进行分析,只给出题目的解决方案:如有疑问请不吝赐教. 题目: 请实现一个算法,确定一个字符串的所有字符[是否全都不同].这里我们要求[不允许使用额外 ...
- 关于padding被计算在width中问题——box-sizing相关
目录 盒子模型 与box-sizing有什么关系 我们为什么要开历史的"倒车" bootstrap怎么解决的 控件的box-sizing 注意甄别 前一阵子遇到一个小问题,在同样的 ...
- [CODEVS1537] 血色先锋队 - BFS
题目描述 Description 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重 ...