MySQL Connector /J是JDBC Type 4驱动程序,实现了 JDBC 4.2规范。Type 4表示驱动程序是MySQL协议的纯Java实现,并且不依赖MySQL客户端库。
对于使用通用数据访问设计模式的大型程序,请考虑使用一种流行的持久性框架(例如Hibernate, Spring的JDBC模板或MyBatis SQL Maps)来减少JDBC代码的数量,以供您调试,调整,保护和安全使用。保持。
当前有两个MySQL Connector / J版本可用:
Connector/J 8.0(以前是Connector / J 6.0;有关版本号更改的说明,请参见 MySQL Connector / J 8.0.7的更改)是用于Java 8平台的Type 4纯Java JDBC 4.2驱动程序。它提供与MySQL 5.6、5.7和8.0的所有功能的兼容性。Connector / J 8.0提供了易于开发的功能,包括使用驱动程序管理器自动注册,标准化的有效性检查,分类的SQLException,对大量更新计数的支持,对java.time 程序包中本地和偏移日期时间变体的支持,对JDBC-4的支持。 .x XML处理,对每个连接的客户端信息的支持以及对 NCHAR, NVARCHAR和 NCLOB数据类型。
Connector/J 5.1还是符合JDBC 4.2规范的Type 4纯Java JDBC驱动程序。它提供与MySQL 5.6、5.7和8.0的所有功能的兼容性。
表2.1 Connector / J版本摘要
连接器/J版本
JDBC版本
MySQL服务器版本
需要JRE
编译需要JDK
状态
8.0
4.2
5.6、5.7、8.0
JRE 8或更高
JDK 8.0或更高版本
全面上市。推荐版本。
5.1
3.0、4.0、4.1、4.2
5.6 ,5.7 ,8.0
JRE 5或更高
JDK 5.0和JDK 8.0或更高版本
一般可用性
获取和使用二进制分发包
使用与平台无关的存档: .tar.gz或.zip 可用于在任何平台上安装Connector / J的存档。使用适当的图形或命令行实用程序(例如,用于 存档的 tar.tar.gz和 用于.zip存档的 WinZip),从.tar.gz或 .zip存档中提取JAR存档到合适的位置。
配置 CLASSPATH
一旦 已经从二进制分发包提取到正确的地方,完成放置在Java类路径中的JAR归档文件安装的驱动程序,可以通过增加其完整的文件路径到你的环境变量,或者用命令直接指定文件路径启动JVM时进行线路切换。 mysql-connector-java-version.jarCLASSPATH-cp
一旦mysql-connector-java-version.jar已经从二进制分发包中提取到正确的位置,通过将JAR归档文件放在Java类路径中完成驱动程序的安装,或者将其完整文件路径添加到classpath环境变量中,或者在启动JVM时用命令行开关-cp直接指定文件路径。
例如,在Linux平台CLASSPATH上,根据您的命令外壳,使用以下形式之一将Connector / J驱动程序添加到您的驱动器:
#Bourne-compatible shell (sh, ksh, bash, zsh):
shell>export CLASSPATH=/path/mysql-connector-java-ver.jar:$CLASSPATH
#C shell (csh, tcsh):
shell>setenv CLASSPATH /path/mysql-connector-java-ver.jar:$CLASSPATH
您也可以设置CLASSPATH环境变量在全局 /etc/profile文件中。
使用JDBC DriverManager 接口连接到MySQL
在应用程序服务器之外使用JDBC时, DriverManager该类管理连接的建立。
指定DriverManager尝试与之建立连接的JDBC驱动程序。最简单的方法是Class.forName()在实现java.sql.Driver 接口的类上使用。对于MySQL Connector/J,此类的名称为 com.mysql.cj.jdbc.Driver。使用此方法,您可以使用外部配置文件来提供连接到数据库时要使用的驱动程序类名称和驱动程序参数。
Java代码的以下部分显示了如何从main()应用程序的方法注册MySQL Connector/J。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.cj.jdbc.*
// or you will have problems!
public class LoadDriver {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public static void main(String[] args){
try {
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
conn =
DriverManager.getConnection("jdbc:mysql://localhost/test?" +
"user=minty&password=greatsqldb");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT foo FROM bar");
// or alternatively, if you don't know ahead of time that
// the query will be a SELECT...
if (stmt.execute("SELECT foo FROM bar")) {
rs = stmt.getResultSet();
}
catch (SQLException ex){
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
finally {
// it is a good idea to release
// resources in a finally{} block
// in reverse-order of their creation
// if they are no-longer needed
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { } // ignore
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) { } // ignore
stmt = null;
}
}
}
}