[英]MySQL prepared statement in Java not returning a value
我有一個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");
}
當我對此進行測試時,返回值中包含的內容為“執行查詢后”; 這意味着沒有返回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
的記錄。
在您的if之前添加rs.beforeFirst()
。
希望這可以幫助。
這只是意味着rs.next()
返回false。 System.err.println("error message")
或僅實際使用調試器(實際上應該使用調試器)可能會對您有所幫助。 因此,您就沒有旅客編號1的記錄。您是否直接在SQL編輯器中對此進行了驗證?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.