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
}
}
4条答案
按热度按时间avkwfej41#
它将返回一个异常,其中包含类似消息的语法错误。
mitkmikd2#
没有价值,因为
Statement.executeQuery(String)
会扔一个SQLException
. 正如链接的javadoc所说,退货:a
ResultSet
对象,该对象包含给定查询生成的数据;从未null
抛出:SQLException
-如果发生数据库访问错误,则在关闭的数据库上调用此方法Statement
,给定的sql语句只生成一个ResultSet
对象上调用该方法PreparedStatement
或者CallableStatement
r6l8ljro3#
第一个语句不会执行,所以下一个执行取决于您将如何处理该异常。所以,如果异常出现,并且您也处理了这个异常,那么resultset中就会有null,因为没有为它赋值。
nbewdwxp4#
最简单的方法是通过在代码中放置断点来调试代码&检查/监视变量的值。大多数ide都有这些调试特性。除了elliottfrisch的回答之外,如果我像下面这样重新构造代码,那么在sql无效/不正确的情况下,控制权就来了
catch
块,你可以看到rs
遗骸null
.