Rumah >pangkalan data >tutorial mysql >Mengapa saya mendapat NullPointerException apabila menyambung ke pangkalan data MySQL dari Java?

Mengapa saya mendapat NullPointerException apabila menyambung ke pangkalan data MySQL dari Java?

Susan Sarandon
Susan Sarandonasal
2024-11-16 09:00:04444semak imbas

Why am I getting a NullPointerException when connecting to a MySQL database from Java?

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:

  • Navigasi ke https://mvnrepository. com/artifact/mysql/mysql-connector-java
  • Muat turun versi terkini (pada masa ini 8.0.12)
  • Tambahkan kebergantungan yang sepadan pada fail pom.xml projek Java anda:
<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:

  • Kemas kini kepada MySQL JDBC Driver 5.1.41 atau lebih baru
  • Sebagai alternatif, anda boleh menggunakan pengoptimuman berikut untuk MySQL 8.0.0 dalam URL sambungan anda:
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn