【发布时间】: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