Java 如何获取用户输入并从where子句中的数据库中进行查询?

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

我收到一条错误消息“语言级别“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: 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)发生的。如果我不能弄清楚,我可能会启动另一个线程,谢谢你的帮助。