【发布时间】:2017-12-28 07:06:59
【问题描述】:
我似乎无法执行我准备好的语句。对于输出消息,我得到“0 航班成功更新”而不是“1 航班成功更新”。我的数据库连接(在 db.Conn 包中)正在工作,并且 Eclipse 本身没有明显的错误。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.*, dbConn.*" %>
String flightid=request.getParameter("id");
String aircraftid=request.getParameter("aircraftid");
String OAirport=request.getParameter("OAirport");
String OCountry=request.getParameter("OCountry");
String DAirport=request.getParameter("DAirport");
String DCountry=request.getParameter("DCountry");
String ecost1=request.getParameter("ecost");
String bccost1=request.getParameter("bccost");
String fccost1=request.getParameter("fccost");
String DDate=request.getParameter("DDate");
String DTime=request.getParameter("DTime");
String ADate=request.getParameter("ADate");
String ATime=request.getParameter("ATime");
String FT=request.getParameter("FT");
String DR=request.getParameter("DiscountRate");
Connection conn=database.getConnection();
String sql="Update flightschedule F ,promotion P set F.aircraftid=?, F.OAirport=?,F.OCountry=?,F.DAirport=?,F.DCountry=?, F.ECost=?, F.BCcost=?,F.FCcost=?, F.DDate=?,F.DTime=?,F.ADate=?,F.ATime=?,F.Flighttime=?, P.DiscountRate=? where F.flightid=P.flightid and F.flightid=? ";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1, flightid);
pstmt.setInt(2, Integer.parseInt(aircraftid));
pstmt.setString(3, OAirport);
pstmt.setString(4, OCountry);
pstmt.setString(5, DAirport);
pstmt.setString(6, DCountry);
pstmt.setString(7, ecost1);
pstmt.setString(8, bccost1);
pstmt.setString(9, fccost1);
pstmt.setString(10, DDate);
pstmt.setString(11, DTime);
pstmt.setString(12, ADate);
pstmt.setString(13, ATime);
pstmt.setString(14, FT);
pstmt.setString(15,DR);
int count=pstmt.executeUpdate();
out.println(count+ " flight successfully updated");
conn.close();
%>
这是我的 2 个数据库:
https://s9.postimg.org/xcaujfq0f/promotion_table.jpg https://s23.postimg.org/9bawk28u3/flight_schedule.jpg
我有一个来自 Promotion 的 FlightID 外键引用 FlightSchedule 的航班 ID。
P.S 我知道 MVC 架构,但我想在使用 Servlet 之前先解决这个问题。
【问题讨论】:
-
参数根据你使用的数量替换。例如。查询中的第一个
?set F.aircraftid=?将变为pstmt.setString(1, flightid);,这不是您想要的。所以正确地重新分配你的参数。
标签: mysql database eclipse jsp prepared-statement