我是 Spring jdbc 的新手,在将其连接到时遇到错误 MySQL数据库,我已经阅读了所有教程但仍然没有找到 问题。
** Following Error occurred **
我的程序开始了......线程“main”中的异常org.springframework.jdbc.CannotGetJdbcConnectionException:失败 获取 JDBC 连接;嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 无法创建与数据库服务器的连接。在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:612) 在 org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:862) 在 org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:917) 在 org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:927) 在 com.spring.jdbc.App.main(App.java:24) 引起的: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 无法创建与数据库服务器的连接。在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机 方法)在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 处 com.mysql.jdbc.Util.getInstance(Util.java:384) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2588) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:832) 在 com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:46)位于 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机 方法)在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 处 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344) 在 java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681) 在 java.sql/java.sql.DriverManager.getConnection(DriverManager.java:190) 在 org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:154) 在 org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:145) 在 org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:205) 在 org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:169) 在 org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) 在 org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 5 更多 引起:java.lang.NullPointerException:无法调用 “java.util.Map.get(Object)”因为“this.serverVariables”为空 com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3307) 在 com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1985) 在 com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1911) 在 com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1288) 处 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2506) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539) ... 25 个以上
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.spring.jdbc</groupId>
<artifactId>springjdbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springjdbc</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context=" http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/Context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" name="ds">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/springjdbc"/>
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate" name="template" >
<property name="dataSource">
<ref bean="ds" />
</property>
</bean>
</beans>
App.java
package com.spring.jdbc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "My Program started......." );
// spring jdbc => JdbcTemplate
ApplicationContext context = new ClassPathXmlApplicationContext("com/spring/jdbc/config.xml");
JdbcTemplate template = context.getBean("template",JdbcTemplate.class);
//Insert Query
String query = "insert into student(id,name,city) values(?,?,?)";
//fire Query
int result = template.update(query,456,"Pooja Joshi","Pune");
System.out.println("number of records inserted.."+ result);
}
}
学生.java
package com.spring.jdbc;
public class Student {
private int id;
private String name;
private String city;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(int id, String name, String city) {
super();
this.id = id;
this.name = name;
this.city = city;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", city=" + city + "]";
}
}
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
面临同样的错误。使用最新的 mysql-connector-java 依赖项。