Java PreparedStatement获取具有2个字符串的对象
我正在使用MYSQL 5.6 当我尝试上面的代码时,ResultSet返回nullJava PreparedStatement获取具有2个字符串的对象,java,mysql,jdbc,Java,Mysql,Jdbc,我正在使用MYSQL 5.6 当我尝试上面的代码时,ResultSet返回null public Client viewClient(String clientName, String password) throws Exception { String sql = "SELECT * FROM main.clients where client_name = ? and client_password = ?;"; try (PreparedStatement pstmt =
public Client viewClient(String clientName, String password) throws Exception {
String sql = "SELECT * FROM main.clients where client_name = ? and client_password = ?;";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
pstmt.setString(1, clientName);
pstmt.setString(2, password);// ;(1, clientID);
ResultSet resultset = pstmt.executeQuery();
pstmt.closeOnCompletion();
while (resultset.next()) {
return new Client(resultset.getLong("client_id"),
resultset.getString("client_name"),
resultset.getString("client_password"),
ClientType.valueOf(resultset.getString("type")),
resultset.getString("address"),
resultset.getString("email"),
resultset.getString("phone"),
resultset.getString("comment"));
}
} catch (SQLException e) {
throw new Exception(e.getMessage());
}
return null;
}
甚至在下面使用station的代码中,ResultSet也会返回对象
public Client viewClient(String clientName, String password) throws Exception {
String sql = "SELECT * FROM main.clients where client_name = 'John' and client_password = '1234';";
try (Statement statement = connection.createStatement()) {
ResultSet resultset = statement.executeQuery(sql);
while (resultset.next()) {
return new Client(resultset.getLong("client_id"),
resultset.getString("client_name"),
resultset.getString("client_password"),
ClientType.valueOf(resultset.getString("type")),
resultset.getString("address"),
resultset.getString("email"),
resultset.getString("phone"),
resultset.getString("comment"));
}
} catch (SQLException e) {
throw new Exception(e.getMessage());
}
return null;
}
我的语法有问题吗?或者准备状态存在一般性问题?我不知道吗?。
谢谢您是否检查了sql脚本?我从主要客户那里看到的。您使用的是别名还是仅仅是一个表名?这看起来不错,只是您不需要
代码>在语句的末尾(你在交互客户端中这样做,但不是在代码中),但我看到人们这样做,认为这是无害的。如果不是,我希望您得到一个异常,而不是没有结果。是否需要使用代码>在sql中?如果返回,为什么还要使用一段时间?您是否检查了变量的值是否与预期一致?旁注2:如果您使用的是try with resources(您正在使用),则没有理由使用closeOnCompletion
。当执行离开try块时,语句将关闭。