Menyelesaikan Masalah Kegagalan Sambungan MySQL dalam Java
Masalah: Menyambung ke pangkalan data MySQL daripada program Java menghasilkan Ralat NullPointerException semasa memanggil DriverManager.getConnection().
Contoh Kod:
import java.sql.*; public class Squirrel { public static void main(String[] args) { String user; String password; Connection connection; Statement statement; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306", user, password); statement = connection.createStatement(); // Other code } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { try { if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
Mesej Ralat:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. ... Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997)
Penyelesaian:
Ralat NullPointerException menunjukkan isu dengan permulaan pemacu MySQL. Punca paling biasa ialah menggunakan versi pemacu MySQL JDBC yang sudah lapuk.
Kemas kini Pemacu JDBC MySQL:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.12</version> </dependency>
Pembetulan Tambahan (untuk MySQL 8.0.1 ):
Jika isu itu berterusan, ia mungkin berkaitan dengan perubahan yang diperkenalkan dalam MySQL 8.0.1. Untuk menyelesaikannya:
jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
Atas ialah kandungan terperinci Mengapa saya mendapat NullPointerException apabila menyambung ke pangkalan data MySQL dari Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!