mysql-8.0 使用jdbc与java连接的那些坑

【注】本文章也算亲身实践,但是是踩着坑去的。然后看了一篇文章,得到一些解决办法。

以下部分代码和思路来源于此篇文章:mysql-8.0.13使用jdbc与java连接教程(亲测)

一、mysql版本

1.1、MySQL Community Server    社区版

(Current Generally Available Release: 8.0.17)  当前版本为8.0.17

MySQL Community Server is the world's most popular open source database. 是世上最流行的开源版本数据库。

下载地址:https://dev.mysql.com/downloads/mysql/

1.2、Jdbc版本

mysql-connector-java-8.0.17

下载地址:https://dev.mysql.com/downloads/connector/j/

下载的下方选择:PlatForm Independent (与平台无关),然后选择Platform Independent (Architecture Independent), ZIP Archive。

再新打开的页面中,点击:No thanks, just start my download. 直接下载

二、注意事项——我踩中的那些坑

2.1  版本匹配问题

原本我已经安装了mysql 8.0了,后来要引用jar包的时候,嫌弃打开mysql的官网太慢,自己去随便百度了个教程,就在某些网站直接下载了jdbc的jar包。当时下载的版本是:mysql-connector-java-5.1.39-bin.jar 。

系统会提示我Could not create connection to database server.

于是我重新去官网下载了最新的jdbc版本。

2.1  新版的变化

以前的版本,连接字符串"jdbc:mysql://localhost:3306/test"即可。“jdbc:mysql://{地址}:{端口号}/{数据库名}”

并且旧版的调用的是Class.forName("com.mysql.jdbc.Driver");

而新版,却需要在字符串中加上参数“?serverTimezone=UTC”,即:"jdbc:mysql://localhost:3306/test?serverTimezone=UTC"。

调用的是Class.forName("com.mysql.jc.jdbc.Driver");

否则将会报以下错误:

Exception in thread "main" 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.

三、代码示范

代码一:(新增,简单版)

package Insert;
import java.sql.*;


public class InsertTest {

	public static void main(String[] args) throws Exception {
		
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
		Connection conn = DriverManager.getConnection(url,"root","123456");
		Statement state = conn.createStatement();
		String sql="insert into test.person(PID,Name,Age) values(2,'Baobao',27)";
		state.execute(sql);
		
		conn.close();
		
	}

}

代码二:查询数据

package Select;

import java.sql.*;


public class SelectTest {

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("加载数据库成功:");
		}catch(Exception ex){
			System.out.println("加载数据库失败:");
			System.out.println(ex.getMessage());
		}
		
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
		String userName = "lbc";
		String password ="123456";
		try {
			conn = DriverManager.getConnection(url,userName,password);
			System.out.println("连接成功");
			String sql = "select PID,Name,Age FROM test.person";
			ps= conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()) {
				int pid = rs.getInt("PID");
				String name = rs.getString("Name");
				int age = rs.getInt("Age");
				System.out.println("["+pid+"]"+"\t" + name+"\t"+ age);
			}
		}catch(Exception ex){
			System.out.println("数据库操作失败:");
			System.out.println(ex.getMessage());
		}

	}

}

代码二的运行结果:

以上,创建了一个名为test的数据库,新建有一个表Person(以下界面来自MySqL Workbench):

  • 12
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
mysql-connector-java-8.0.jarMySQL官方提供的JDBC驱动程序,用于与Java应用程序连接和操作MySQL数据库。下面是关于mysql-connector-java-8.0.jar的一些信息。 mysql-connector-java-8.0.jar是一个Java Archive文件,以.jar为扩展名。它包含了与MySQL数据库交互所需的类和方法。我们可以将该驱动程序添加到Java项目的classpath中,以便可以在项目中使用MySQL数据库。 mysql-connector-java-8.0.jarMySQL官方推荐的JDBC驱动程序版本。它支持MySQL数据库的最新功能和性能优化。该驱动程序遵循JDBC标准,提供了与数据库的连接、查询、更新等操作的方法。 使用mysql-connector-java-8.0.jar驱动程序进行数据库连接时,需要提供MySQL数据库的连接信息,包括数据库的主机名、端口号、数据库名称、用户名和密码等。通过创建一个数据库连接对象,可以使用驱动程序提供的方法与数据库进行交互。 mysql-connector-java-8.0.jar支持连接池功能,可以提高数据库连接的性能和效率。连接池可以维护一组数据库连接,从中获取连接以处理请求,而不会频繁地创建和关闭连接使用mysql-connector-java-8.0.jar进行数据库操作需要导入相关的类和方法,并按照JDBC的API进行使用。可以执行SQL查询、插入、更新、删除等操作,并通过结果集获取查询结果。 总而言之,mysql-connector-java-8.0.jar是与MySQL数据库连接和操作的必备JDBC驱动程序。通过将其添加到Java项目中,我们可以方便地使用Java语言与MySQL数据库进行交互,实现对数据库的增删改查等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值