![](/img/trans.png)
[英]Hibernate “The resource type Session does not implement java.lang.AutoCloseable”
[英]Java error "The resource type Connection does not implement java.lang.AutoCloseable" in the try-catch connection
我在可自動關閉的 class 中遇到此錯誤,在我嘗試建立連接以將數據插入 mysql 數據庫的行中,在 try-catch 中。我做了所有必要的導入,對包和類的引用,但我沒有成功
錯誤行:
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_CRIANCA_SQL))
package dao;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.sun.jdi.connect.spi.Connection;
import model.Crianca;
public class CriancaDao {
private String jdbcURL = "jdbc:mysql://localhost:3306/userdb?useSSL=false";
private String jdbcUsername = "root";
private String jdbcPassword = "root";
private String jdbcDriver = "com.mysql.jdbc.Driver";
private static final String INSERT_CRIANCA_SQL = "INSER INTO crianca" + "(nome,cpf,email,dataNasc,senha,responsavel,dentistaResponsavel,avatar,atendimento) VALUES " + "(? , ? , ? , ? , ? , ?, ?, ?, ?); ";
private static final String SELECT_CRIANCA_BY_ID = "select id, nome,cpf,email,dataNasc,senha,responsavel,dentistaResponsavel,avatar,atendimento from crianca where id =?";
private static final String SELECT_ALL_CRIANCA = "select * from crianca";
private static final String DELETE_CRIANCA_SQL = "select from crianca where id = ?";
private static final String UPDATE_CRIANCA_SQL = "update crianca set name = ?, cpf ?, email = ?, dataNasc = ?, senha = ?, responsavel = ?, dentistaResponsavel = ?, avatar = ?, atendimento = ? ;";
public CriancaDao() {
}
protected Connection getConnection() {
Connection connection = null;
try {
Class.forName("jdbcDriver");
connection = (Connection) DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return connection;
}
public void insertCrianca(Crianca crianca) throws SQLException {
System.out.println(INSERT_CRIANCA_SQL);
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_CRIANCA_SQL)) {
preparedStatement.setString(1, crianca.getNome());
preparedStatement.setString(2, crianca.getCpf());
preparedStatement.setString(3, crianca.getEmail());
preparedStatement.setString(4, crianca.getDataNasc());
preparedStatement.setString(5, crianca.getSenha());
preparedStatement.setString(6, crianca.getResponsavel());
preparedStatement.setString(7, crianca.getDentistaResponsavel());
preparedStatement.setString(8, crianca.getAvatar());
preparedStatement.setString(9, crianca.getAtendimento());
System.out.println(preparedStatement);
preparedStatement.executeUpdate();
} catch (SQLException e) {
printSQLException(e);
}
}
}
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_CRIANCA_SQL))
該語句意味着您可以在 try-with-resources 塊中使用任何 class,只要它實現了 AutoCloseable 接口。
也許你的庫版本與 Java 版本不兼容。 您可以查找與 java 版本兼容的庫。
您使用的是錯誤的Connection
。 您正在使用的Connection
class 來自 package com.sun.jdi.connect.spi
,它不是數據庫連接,不能與來自java.sql
的其他類一起使用。 根據Javadocs的說法,它是“調試器和它調試的目標 VM 之間的 [a] 連接。”。 它也沒有實現AutoCloseable
,導致你的錯誤。
將Connection
的導入更改為從java.sql
導入。 該接口確實擴展了AutoCloseable
。
import java.sql.Connection;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.