Java 如何获取用户输入并从where子句中的数据库中进行查询?
我收到一条错误消息“语言级别“1.8”不支持资源引用”,以及以下消息:Java 如何获取用户输入并从where子句中的数据库中进行查询?,java,java.util.scanner,Java,Java.util.scanner,我收到一条错误消息“语言级别“1.8”不支持资源引用”,以及以下消息: Error:(62, 31) java: <identifier> expected Error:(62, 32) java: ')' expected Error:(62, 33) java: '{' expected Error:(62, 35) java: not a statement Error:(62, 40) java: ';' expected Error:(64, 9) java: illega
Error:(62, 31) java: <identifier> expected
Error:(62, 32) java: ')' expected
Error:(62, 33) java: '{' expected
Error:(62, 35) java: not a statement
Error:(62, 40) java: ';' expected
Error:(64, 9) java: illegal start of expression
Error:(71, 11) java: 'catch' without 'try'
Error:(82, 5) java: illegal start of expression
Error:(82, 13) java: illegal start of expression
Error:(82, 36) java: ';' expected
Error:(82, 66) java: ';' expected
Error:(98, 2) java: reached end of file while parsing
错误:(62,31)java:应为
错误:(62,32)应为java:“)”
错误:(62,33)java:“{”应为
错误:(62,35)java:不是语句
错误:(62,40)应为java:“;”
错误:(64,9)java:表达式的开头非法
错误:(71,11)java:'catch'不带'try'
错误:(82,5)java:表达式的开头非法
错误:(82,13)java:表达式的开头非法
错误:(82,36)应为java:“;”
错误:(82,66)应为java:“;”
错误:(98,2)java:解析时到达文件末尾
您不能在try
资源中使用语句,只允许使用资源。这里的stmt.setString(1,state);
是一个语句。因此您需要创建多个try-catch
或单独的方法,如下所示:
try(Connection con = getConnection();
PreparedStatement stmt = createPreparedStatement(con, state);
ResultSet rs = stmt.executeQuery();
)
{
while (rs.next()) {
customers.add(new Customer(rs.getInt("CustomerID"),
rs.getString("Name"),
rs.getString("City"),
rs.getString("StateProvince")));
}
}catch (SQLException e) {
e.printStackTrace();
}
方法:
PreparedStatement createPreparedStatement(Connection con, String state) throws SQLException {
PreparedStatement stmt = con.prepareStatement("SELECT CustomerID, Name, City, StateProvince FROM CUSTOMER WHERE StateProvince LIKE ?");
stmt.setString(1, state);
return stmt;
}
“我出错了”:张贴整个stacktrace@c0der我编辑了它,希望这会有更多帮助。您的错误是编译错误…您缺少一些括号和分号在
executeQuery()
@KobiashiMaru问题位于stmt.setString(1,状态)之后使用分号
且仅限于缺少的;
。请参见下面的答案。我得到了答案NullPointerException@KobiashiMaru这可能是由于其他原因。此代码未经测试,因为我没有您的所有代码。您之前遇到的问题应该通过此方法得到解决。NullPointer
是运行时异常。不管怎样,您从哪里获得异常这是在jdbc.FiredUpDB.readCustomerBasics(FiredUpDB.java:56)在jdbc.FiredUpDB.FiredUpDB.readCustomers(FiredUpDB.java:26)在jdbc.Main.Main(Main.java:16)发生的。如果我不能弄清楚,我可能会启动另一个线程,谢谢你的帮助。