java—sql语句语法错误时结果集的值?

uqjltbpv  于 2021-06-17  发布在  Mysql
关注(0)|答案(4)|浏览(264)

我正在使用mysql。如您所见,sql语句在 SELECT . 所以,我想知道 rs 是?我希望得到一些建议。我非常感谢你;

String sql = "SELCT * FROM user WHERE username = '" + username + "' and password = '" + password + "'";
ResultSet rs = stm.executeQuery(sql);
avkwfej4

avkwfej41#

它将返回一个异常,其中包含类似消息的语法错误。

mitkmikd

mitkmikd2#

没有价值,因为 Statement.executeQuery(String) 会扔一个 SQLException . 正如链接的javadoc所说,
退货:a ResultSet 对象,该对象包含给定查询生成的数据;从未 null 抛出: SQLException -如果发生数据库访问错误,则在关闭的数据库上调用此方法 Statement ,给定的sql语句只生成一个 ResultSet 对象上调用该方法 PreparedStatement 或者 CallableStatement

r6l8ljro

r6l8ljro3#

第一个语句不会执行,所以下一个执行取决于您将如何处理该异常。所以,如果异常出现,并且您也处理了这个异常,那么resultset中就会有null,因为没有为它赋值。

nbewdwxp

nbewdwxp4#

最简单的方法是通过在代码中放置断点来调试代码&检查/监视变量的值。大多数ide都有这些调试特性。除了elliottfrisch的回答之外,如果我像下面这样重新构造代码,那么在sql无效/不正确的情况下,控制权就来了 catch 块,你可以看到 rs 遗骸 null .

public void executeQuery(Connection conn, String username,String password) {
    String sql = "SELCT * FROM user WHERE username = '" + username + "' and password = '" + password + "'";
    ResultSet rs = null;
    Statement stm = null;
    try {
        stm = conn.createStatement();
        rs= stm.executeQuery(sql);
        while(rs.next()) {
         //Extract ResultSet here as per needed logic 
        }
    } catch (SQLException e) {
     // Your control comes here if query is wrong , put a break point at below line & examine value of rs
        e.printStackTrace();
    }finally {
        // Close resources not needed after this method call like - result sets , statements & connection  
    }

    }

相关问题