在 Eclipse IDE 中使用 JDBC 检索数据时遇到问题
Trouble retrieving data with JDBC in Eclipse IDE
我是 Java 的新手,所以我正在做一个项目来发展我对数据库和 Java 的了解。
我已经想出如何将查询添加到数据库中,但现在我在尝试打印它们时遇到错误。
假设我已经导入了所有必要的东西,例如扫描仪和 sql 语句
这是我的连接 class,名为 MainClass:
public static Connection getConnection() throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testTable";
String username = "placeholder";
String password = "placeholder";
Class.forName(driver);
Connection conn = Driver Manager.getConnection(url, username, password);
return conn;
}
现在在另一个 class 中,如果用户键入 !lookup 和一个词,我希望从 table 中检索该词的定义,其名称是字典,列是词,定义:
String userSearch = user_input.next();
String[] userSearchSplit = userSearch.split(" ", 3);
if (userSearchSplit[0].equals("!lookup")) {
try {
conn = MainClass.getConnection();
String query = "select definition from dictionary where word=" + userSearchSplit[1];
ResultSet result = pstmt.executeQuery(query);
while (result.next()) {
String definition = result.getString("definition");
System.out.println(definition);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在所有这一切结束时,当我尝试查找我在 运行 之前输入 table 的单词时,我得到:
java.lang.NullPointerException
检查您的 user_input 是否为空?
我假设你的代码:
ResultSet result = pstmt.executeQuery(query);
作为
Statement pstmt = conn.createStatement();
ResultSet result = pstmt.executeQuery(query);
或者你没有正确初始化pstmt
我是 Java 的新手,所以我正在做一个项目来发展我对数据库和 Java 的了解。
我已经想出如何将查询添加到数据库中,但现在我在尝试打印它们时遇到错误。
假设我已经导入了所有必要的东西,例如扫描仪和 sql 语句
这是我的连接 class,名为 MainClass:
public static Connection getConnection() throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testTable";
String username = "placeholder";
String password = "placeholder";
Class.forName(driver);
Connection conn = Driver Manager.getConnection(url, username, password);
return conn;
}
现在在另一个 class 中,如果用户键入 !lookup 和一个词,我希望从 table 中检索该词的定义,其名称是字典,列是词,定义:
String userSearch = user_input.next();
String[] userSearchSplit = userSearch.split(" ", 3);
if (userSearchSplit[0].equals("!lookup")) {
try {
conn = MainClass.getConnection();
String query = "select definition from dictionary where word=" + userSearchSplit[1];
ResultSet result = pstmt.executeQuery(query);
while (result.next()) {
String definition = result.getString("definition");
System.out.println(definition);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在所有这一切结束时,当我尝试查找我在 运行 之前输入 table 的单词时,我得到:
java.lang.NullPointerException
检查您的 user_input 是否为空?
我假设你的代码:
ResultSet result = pstmt.executeQuery(query);
作为
Statement pstmt = conn.createStatement();
ResultSet result = pstmt.executeQuery(query);
或者你没有正确初始化pstmt