为此,我使用一个控制器和一个类来创建数据连接。
第一个方法用于创建连接,而下一个方法用于执行查询。但是,当我尝试执行它们时,它会给我一个空指针异常。
我确实读过一些与此类似的问题,但问题是我使用的play框架有一个角度的前端。使添加连接器有点混乱。我确实加了很多遍,但它一定认不出来。我创建了一个新的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");
}
}
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");
}
}
}
我得到了一个空指针异常和“未连接”打印。