java - Java 中的 MySQL 准备语句不返回值

标签 java mysql prepared-statement

我有一个 Web 服务方法,可以针对 MySQL 数据库执行准备好的语句。当我在 MySQL 中运行此语句时,我得到一个返回值:

SELECT first_name
  FROM lytthouse_airlines.passenger
 WHERE passenger_id = 1

;

但是当我在 java 类中运行这个准备好的语句时,它不起作用:

PreparedStatement getName = connection.prepareStatement(
   "SELECT first_name " +
   " FROM lytthouse_airlines.passenger " +
   " WHERE passenger_id = ? "
 );

getName.setInt(1, passengerId);
rs = getName.executeQuery();
returnValue = "After executing query";

if (rs.next()) 
{
   returnValue = "inside rs.next";
   returnValue = rs.getString("first_name");
}

当我测试这个时,我在 returnValue 中得到的内容包含“执行查询后”;这意味着没有返回 ResultSet (rs),因此不会进入 if (rs.next()) 逻辑。

有人知道出了什么问题吗?

新内容

在郭的回答之后,我稍微改变了代码,这样我就可以看到passengerId的值。当我运行 Web 服务测试时,我得到了这个非常有趣的结果。

Method parameter(s)

Type    Value
int     1
Method returned

java.lang.String : "After executing query, with a passengerId of 0"

我已经仔细检查过,并且在方法中的任何地方都不会在到达他们查询之前更改 PassengerId 的值。

另一条新评论

我认为这个问题与准备好的语句无关,它似乎与方法本身有关。我将方法的开头更改为如下所示

@WebMethod(operationName = "getPassengerName")
public String getPassengerName(@WebParam(name = "passengerId ") int passengerId)
{
   //MySQL elements
   Connection connection;
   ResultSet rs = null;

   String returnValue = "start method with passengerId having a value of: " + passengerId;

当我运行测试时,我得到这个:

getPassengerName Method invocation


Method parameter(s)

Type    Value
int     1
Method returned

java.lang.String : "start method with passengerId having a value of: 0"

我认为这需要一个新问题。我现在提出一个新问题。再次感谢所有查看此内容并提供反馈的人。我确实很感激。

最佳答案

我在本地主机上测试了结果,结果是正确的。 所以我认为您没有 passenger_id = 1 的记录。

关于java - Java 中的 MySQL 准备语句不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25110419/

相关文章:

php - 具有多个命名参数的 PDO bindParam()

java - Spring Tomcat 多个 HTTPS 端口

php - 无法将插入的值保存到 TableView 和 mySQL 中 - PHP

php - PHP 中的 HTML <select> 使用 mysql 数据

mysql - Laravel AH01630 : client denied by server configuration on Specific API routes

iphone - 如何在 iPhone 中为 SQLite 编写准备好的语句

php - 管理员确认后登录

java - 从 JfreeChart 中的最大范围值获取域值

java - 在 IntelliJ IDEA 中将 Java 源代码导入为库

java - 使用 UriBuilder 在构建器 URI 中保留一些 {template}