【问题标题】:Why does MYSQL connection givie me a null pointer exception [duplicate]为什么MYSQL连接给我一个空指针异常[重复]
【发布时间】:2018-12-07 23:47:45
【问题描述】:

嗨,我试图从 mysql 数据库中获取一些表值到 playframework cli。 为此,我使用了一个控制器和一个类来创建数据连接。 第一种方法用于创建连接,而下一种方法用于执行查询。但是,当我尝试执行它们时,它给了我一个空指针异常。 我确实阅读了一些与此有些接近的其他问题,但问题是我正在使用带有角度前端的游戏框架。使添加连接器有点混乱。我确实添加了多次,但它无法识别它。我创建了一个新的 java 文件并将完全相同的代码复制粘贴到另一个类并使用 main 方法运行它并且它可以工作。表名和字段名相互匹配。非常感谢任何形式的帮助。

控制器类:

public class HomeController extends Controller {

    public Result addBooks() {
        System.out.println(request().body().asText());
        JsonNode jsonNode = Json.toJson(new AppSummary("Book Added Successfully"));
        JsonNode json = Json.parse(request().body().asText());

        connect newcon = new connect();
        newcon.connection();
        newcon.checkBooks();

        return ok(jsonNode).as("application/json");
    }
}

带有 jdbc 连接和一个要执行的查询的连接类

package controllers.librarycontrollers;

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


public class connect {
    private Connection conn;
    private Statement stmt;
    private ResultSet rstst;

    public void connection() {

        try {
            System.out.println("connected ");
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/librarymanager", "root", "");
            stmt = conn.createStatement();

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void checkBooks() {
        try {
            String query = "select * from book";
            rstst = stmt.executeQuery(query);
            System.out.println("records added successfully");
            while (rstst.next()) {
                String title = rstst.getString("booktitle");
                String name = rstst.getString("authorName");

                System.out.println("booktitle:" + title + "authorName:" + name);
            }
            conn.close();
        } catch (Exception c) {
            System.out.println(c);
            System.out.println("not connected");
        }
    }
}

我得到一个空指针异常以及“未连接”打印。

【问题讨论】:

  • 你从哪里得到NullPointerException?请提供更多信息
  • connected,com.mysql.jdbc.Driver , java.lang.NullPointerException, not connected ,这是我在控制台中得到的。所以我假设第一个“连接”打印是为了“连接”
  • 你能说它发生在哪一行代码中吗?您应该能够在堆栈跟踪中看到它
  • 它给了你一个NullPointerException,因为你忽略了在类路径上找不到com.mysql.jdbc.Driver的错误。 不要捕获异常并继续,如果没有出现任何问题。 修复您的类路径,即添加 MySQL JDBC 驱动程序 jar 文件。根据 JDBC 驱动程序版本,您还可能指定了错误的类名。建议删除 Class.forName() 调用,因为如果 jar 文件在类路径中,这应该会自动发生。
  • 请发布完整的异常堆栈跟踪(使用e.printStackTrace() 而不是System.out.println(e.getMessage()))。

标签: java mysql jdbc playframework


【解决方案1】:

你的 Java 应用项目中是否有对 mysql 连接器 jar 包的引用? 如果没有,加载器找不到类,就会出现空指针异常。

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多