1请五额若天以ui 2021-10-06 20:44 采纳率: 100%
浏览 111
已结题

JDBC连接时 在主方法可以运行,封装成类调用的时候就出错

JDBC连接时 在主方法可以运行,封装成类 调用的时候就出错
这个是我创建的连接的类

package sql_connection;

import java.sql.Connection;
import java.sql.DriverManager;

public class GetConnection {
    private static Connection conn=null;
    private static String address="jdbc:mysql://localhost:3306/MYSQL?useSSL=false&serverTimezone=UTC";
    private static String dateBaseName="****";
    private static String dateBasePwd="******";
    public static Connection getconn() {
        if(conn==null) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");//提示错误
                conn=DriverManager.getConnection(address, dateBaseName, dateBasePwd);
                System.out.println("连接成功");
            } catch (Exception e) {
                System.out.println("连接失败");
                e.printStackTrace();
            }
            
        }

        return conn;
        
    }

}

这是我创建的主方法

package sql_connection;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class run {
    public static void main(String[] args) {
        Connection conn=null;
        Statement str=null;
        String sjk="select * from goods";
         try {
             conn= GetConnection.getconn();//提示错误
            str=conn.createStatement();
            ResultSet rs=str.executeQuery(sjk);
            while(rs.next()) {                
                System.out.println(rs.getString("goods_name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                conn.close();//提示错误
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                str.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        }
}

这是最后的运行结果
连接失败
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:377)
at sql_connection/sql_connection.GetConnection.getconn(GetConnection.java:14)
at sql_connection/sql_connection.run.main(run.java:14)
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.close()" because "conn" is null
at sql_connection/sql_connection.run.main(run.java:24)

希望各位

```java

```帮我看看

  • 写回答

2条回答 默认 最新

  • CSDN专家-微编程 2021-10-06 22:50
    关注

    很明显在你的工具类里面有问题,首先你的mysql数据库,你居然在系统表里面创建表,而不是自定义数据库,然后在自定义数据库里面建表,另外你写if判断是不是多余了

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 ciflog-smart磁性定位子系统
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示