我看不到是否有错误,因为该应用程序未提示任何内容。我想从数据库中获取一个值并将其放在一个变量中,以便以后在需要时显示。
我对编程还不是很陌生,我曾经看过一些教程,但是由于导师在做事上有他们自己的方法,我似乎无法正确地完成某些事情。
public void selectQuery(String input) throws SQLException {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String USERNAME = "root";
String PASSWORD = "root";
String CONN_STRING =
"jdbc:mysql://localhost:3306/javaddy?serverTimezone=UTC";
Connection connection =
DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
try {
String q = "SELECT Inquiry_answer,Inquiry_question FROM inquiries WHERE Inquiry_question = '" + input + "'";
Statement stmt = connection.createStatement();
ResultSet res = stmt.executeQuery(q);
String answer;
answer = res.getString("Inquiry_answer");
// /* there is no value returned here (I think) because after passing to
// bot method, it doesn't print anything */
bot(answer);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
} catch (ClassNotFoundException e) {
System.out.println("Could not find the database driver " + e.getMessage());
} catch (SQLException e) {
System.out.println("Could not connect to the database " + e.getMessage());
}
}
我希望从数据库收到一个值,但是没有返回任何值。
答案 0 :(得分:0)
基本上,这是应该使用调试器的明确案例。我不知道您使用的是哪种编程环境,但是所有大型环境(IntelliJ,Eclipse,Netbeans)都支持内置的调试。在这种情况下,您应该在bot(answer);
行上设置一个断点,这样,您可以确定其中是否有任何数据,检查bot功能是否正常运行等。
此外,如上所述,如果没有获得堆栈跟踪,则代码将正确返回值。也许数据库中的相关字段为空?同样,使用调试器可以为您提供帮助。
这里是一个示例教程,用于在Eclipse中调试Java程序,以备不时之需:https://www.vogella.com/tutorials/EclipseDebugging/article.html
答案 1 :(得分:0)
如果不执行resultet.next(),则无法获得结果。
正确的做法:
ResultSet res = stmt.executeQuery(q);
String answer;
res.next();
answer = res.getString("Inquiry_answer");
// /* there is no value returned here (I think) because after passing to
// bot method, it doesn't print anything */
bot(answer);
或更好的方法将此代码放入循环中,例如:
while (res.next())
{
String answer = res.getString("Inquiry_answer");
System.out.println(answer);
}
我想bot方法会打印字符串。