点击 注册或者登录都是处于Null状态,连接不到数据库,昨天会报空指针异常,今天已经加了if else 没有错误 但还是处于con等于Null的状态,不能进入数据库
连接怎么获取的发出来看看,另外控制台报错也发出来
该回答引用ChatGPT4与博主@晓码自在合作编写:
Eclipse连接MySQL出现空指针异常,通常有以下几个原因:
有时Eclipse或MySQL的额外配置也会影响数据库连接,你可以检查:
解决方法为:
连接数据库是一个常见的工作,需要对各个环节都比较熟悉才能快速定位并解决问题。以上几点都需要一一排查,定位到具体原因后进行修复。
分享最近的demo:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BaseDao {
private static final String url = "jdbc:mysql://localhost:3306/mynewsql";
private static final String user = "root";
private static final String password = "123456";
/***
* 连接数据库的方法
*/
public static Connection getCon() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");// 加载数据库驱动
System.out.println("测试加载数据库成功");
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("测试数据库链接成功");
return con;
}
/***
* 关闭数据库的方法
*/
public static void close(Connection con, PreparedStatement ps) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
先引入数据库驱动jar包
package com.jianmu.tools;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author kong
*/
public class JdbcTools {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/db_jianmu_pingxuan_log?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8";
public static final String USERNAME = "root";
public static final String PASSWORD = "root";
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn(String url, String username, String password) {
try {
return DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static String getSql(String database) {
return "select table_name from information_schema.tables where table_schema='" + database + "'";
}
public static List<String> tables(String url, String username, String password, String database) {
return tables(getConn(url, username, password), database);
}
public static void close(Connection conn, Statement statement, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException ignored) {
}
try {
if (statement != null) {
statement.close();
}
} catch (SQLException ignored) {
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ignored) {
}
}
public static List<String> tables(Connection connection, String database) {
List<String> tables = new ArrayList<>(100);
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try {
conn = connection;
if (conn != null) {
statement = conn.createStatement();
rs = statement.executeQuery(getSql(database));
while (rs.next()) {
tables.add(rs.getString(1));
}
rs.close();
statement.close();
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, statement, rs);
}
return tables;
}
}