这篇文章跟读者们介绍Java语言如何链接到MySQL数据库相关操做,及FAQ(Frequently Asked Questions)介绍。java
IDE:Eclipsemysql
数据库:使用的是MySQL 8.0sql
驱动程序包:mysql-connector-java-8.0.12.jar数据库
驱动程序类名:com.mysql.cj.jdbc.Driver服务器
提早准备工做:笔者使用MySQL Workbench 工具来进行数据库CRUD各类操做,在数据库中创建了一个test数据库,接着在test数据库中创建teacher表格和往向表格中增长数据。app
而且已经往表中插入了6项数据。ide
在Eclipse中创建一个数据库操做的Java project。而且在project里面引入(配置)驱动程序jar包工具
1.导入所须要的包ui
2.注册JDBC驱动加密
3.创建链接到数据库
4.执行 CRUD 操做
5.处理获得的结果
6.关闭资源,释放链接
提供源代码参考:
1 //STEP 1:导入包 2 //大多数状况下,使用import java.sql.*;就足够了。 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class DBConnettion { 10 11 //不一样版本的数据库驱动,名字会不相同同。 12 //数据库驱动 mysql-connector-java 6.0以上的版本, 驱动名是:"com.mysql.cj.jdbc.Driver" 13 //旧版本驱动名是:"com.mysql.jdbc.Driver" 14 private static final String JDBC_DEIVER = "com.mysql.cj.jdbc.Driver"; 15 //笔者查看本机数据库进程,默认使用3306端口,你们根据本身数据库进程端口号来相应修改。 16 //好比我要访问MySQL的test数据库, 主机ip:端口号/数据库名称 数据库URL格式:---"jdbc:mysql://localhost:3306/test 17 private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false";//?useUnicode=true&characterEncoding=utf8&useSSL=false 18 private static final String USER = "****"; //"****"替换成本身的数据库用户名 19 private static final String PASS = "****"; //"****"替换成本身的数据库密码 20 21 public static void main(String[] args) { 22 Connection conn = null; 23 Statement stmt = null; 24 25 try { 26 //STEP 2:注册 JDBC 驱动 27 Class.forName(JDBC_DEIVER); 28 29 //STEP 3:创建链接到数据库 30 System.out.println("正在链接数据库......"); 31 conn = DriverManager.getConnection(DB_URL, USER, PASS); 32 stmt = conn.createStatement(); 33 34 //STEP 4:执行 CRUD 操做 35 System.out.println("正在查询数据:"); 36 String sql = "select * from teacher;"; 37 ResultSet rs = stmt.executeQuery(sql); 38 39 //STEP 5:处理获得结果 40 System.out.println("Department ID Name"); 41 while (rs.next()) { 42 int id = rs.getInt("id"); 43 String name = rs.getString("name"); 44 if (!rs.isLast()) 45 System.out.println("\t " + id + " " + name); 46 else 47 System.out.println( " " + id + " " + name); 48 } 49 50 //STEP 6:关闭资源,释放链接。 51 rs.close(); 52 stmt.close(); 53 conn.close(); 54 } catch (ClassNotFoundException e) { 55 e.printStackTrace(); 56 } catch (SQLException e) { 57 e.printStackTrace(); 58 } finally { 59 try { 60 if (stmt != null) 61 stmt.close(); 62 if (conn != null) 63 conn.close(); 64 } catch (SQLException e) { 65 // TODO Auto-generated catch block 66 e.printStackTrace(); 67 } 68 } 69 System.out.println("释放数据库链接......"); 70 } 71 }
运行结果:
出现问题:
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加密链接。