JDBC测试代码

需要建立一个java project,并且需要导入这个mysql驱动包,注意的就是这个jar的版本不要太高,如果选择8.*.*那种高版本的,下面的代码编译的时候会出现很多问题,因为高版本的URL、驱动名称那些都会有改动。

jar下载可以提供一个方法(通过maven下载):点击打开链接

代码:

package com.luozuo.chap02;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class jdbcTest {

	public static void main(String[] args) throws ClassNotFoundException,SQLException{
		//jdbc:mysql://主机名或IP抵制:端口号/数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=true
		String URL="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT&useUnicode=true&characerEncoding=utf-8&useSSL=true";
		String USER="root";
		String PASSWORD="123456";
		//1.加载驱动
		Class.forName("com.mysql.jdbc.Driver");
		//2.获得数据库链接
		Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
		//3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
		Statement st=conn.createStatement();
		ResultSet rs=st.executeQuery("select * from user");
		//4.处理数据库的返回结果(使用ResultSet类)
		while(rs.next()) {
			System.out.println(rs.getString("userName")+" "+rs.getString("password"));
		}
		//关闭资源
		rs.close();
		st.close();
		conn.close();
	}
}

这里需要注意的就是在连接mysql数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8,它的作用如下:

指定字符的编码、解码格式。例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:

1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

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

 

再就是后面的&useSSL=true,这个是因为数据库版本过高连接时会出现如下警告:

Establishing SSL connection without server's identity verification is not recommended

加上了&useSSL=true就可以消除这种警告了。

 

还需要加上一个serverTimezone=GMT(注意字母大小写),不然会报如下错误出现这个的原因是因为 mysql返回的时间总是有问题,比实际时间要早8小时。

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.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
	at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:444)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.living.jdbc.jdbcTest.main(jdbcTest.java:19)
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: 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.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:83)
	at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:128)
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2201)
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2225)
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1391)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:993)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)
	... 6 more

 

你可能感兴趣的:(JDBC测试代码)